- Сообщения
- 8,673
- Репутация
- 2,486
В данной теме будут публиковаться часто используемые и полезные регулярные выражения...
Извлечение имени файла с расширением с полного пути
Извлечение только пути к файлу с полного пути (путь к родительскому каталогу)
Извлечение текста находящегося между двумя подстроками/тегами
Извлечение ссылки у параметра href
Получение версии файла из многострочноого текста (без суффиксов-нулей)
Сравнение версии файла
Удалить все строки в которых нет определенного символа
Получение комментария в конце строки AutoIt кода
Извлечение имени файла с расширением с полного пути
Код:
$sPath = "C:\Path\FileName.ext"
$sFileName = StringRegExpReplace($sPath, '^.*\\', '') ;FileName.ext
Извлечение только пути к файлу с полного пути (путь к родительскому каталогу)
Код:
$sPath = "C:\Path\FileName.ext"
$sParentPath = StringRegExpReplace($sPath, '\\[^\\]*$', '') ;C:\Path
Извлечение текста находящегося между двумя подстроками/тегами
Код:
$vTest = 'Hi, this is a <b>test,' & @CRLF & @TAB & 'very important test</b>'
$sRet = StringRegExpReplace($vTest, '.*<b>((?s).*)</b>.*', '\1')
Извлечение ссылки у параметра href
Код:
$vTest = '<a href="http://test.com/it''s_my_page">test</a>'
;$vTest = "<a href='http://test.com/it""s_my_page'>test</a>"
;$vTest = "<a href=http://test.com/it""s_my_page>test</a>"
$sRet = StringRegExp($vTest, 'href\s*=\s*([''"])?([^\1\s]+?)(?:\1|>)', 3)
If UBound($sRet) > 1 Then
ConsoleWrite($sRet[1] & @LF)
EndIf
Получение версии файла из многострочноого текста (без суффиксов-нулей)
Код:
$vTest = 'some data' & @CRLF & 'version=1.10.0.0' & @CRLF & 'other data'
$sRet = StringRegExpReplace($vTest, '(?si).*?version=([0-9]+(?:[\d.]+[1-9]+0?|[0-9.]{2})?).*', '\1')
ConsoleWrite($sRet & @LF)
Сравнение версии файла
Код:
If StringRegExpReplace(@AutoItVersion, '(?<!\d)(\d)(?!\d)', '0\1') < '03.03.12.00' Then
MsgBox(16, 'Error', 'Require AutoIt 3.3.12.0 or later.')
EndIf
Удалить все строки в которых нет определенного символа
Код:
#include<Array.au3>
$sText = "pip|1.2.0|1.2.0|false" & @CRLF _
&"PowerShell|5.1.14409.20170510|5.1.14409.20170510|false" & @CRLF _
&"hg fsghjdgsh ghj." & @CRLF _ ; строка будет удалена
&"python3|3.6.2|3.6.2|false" & @CRLF _
&"python3 3.6.2 false" & @CRLF _ ; строка будет удалена
&"qbittorrent|3.3.15|3.3.15|false"
ConsoleWrite(StringRegExpReplace($sText, "(?m)^[^|]*($|\R)", ""))
Получение комментария в конце строки AutoIt кода
Код:
$vTest = _
'MsgBox(64, ''Title;'', "Text;") ;Message' & @CRLF & _
'DllStructCreate("chr;dword;") ;Struct'
$aComments = StringRegExp($vTest, '(?m)(?:[^;]*?(?:"[^"]*"|''[^'']*'')[^;]*?)*(;.*?|)$', 3)
For $oCmnt In $aComments
If $oCmnt Then
ConsoleWrite($oCmnt & @LF)
EndIf
Next
Последнее редактирование: