- Сообщения
 - 8,673
 
- Репутация
 - 2,487
 
В данной теме будут публиковаться часто используемые и полезные регулярные выражения...
Извлечение имени файла с расширением с полного пути
	
	
	
	
  
    
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Извлечение только пути к файлу с полного пути (путь к родительскому каталогу)
	
	
	
	
  
    
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Извлечение текста находящегося между двумя подстроками/тегами
	
	
	
	
  
    
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Извлечение ссылки у параметра 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
	
			
				Последнее редактирование: