Что нового

RegExp Часто используемые и полезные выражения / шаблоны

Статус
Закрыто для дальнейших ответов.

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
В данной теме будут публиковаться часто используемые и полезные регулярные выражения...





Извлечение имени файла с расширением с полного пути
Код:
$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
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Верх