Что нового

[RegExp] Замена строки на последнюю подстроку

erlik

Продвинутый
Сообщения
317
Репутация
84
Есть набор строк:

_REGISTRY_MACHINE_SAM
_REGISTRY_MACHINE_SECURITY
_REGISTRY_MACHINE_SOFTWARE
_REGISTRY_MACHINE_SYSTEM
_REGISTRY_USER_.DEFAUL
T
нужно произвести замену так, чтобы в строках остались только последние слова:SAM, SECURITY, SOFTWARE, SYSTEM, DEFAULT
Пробовал так:
Код:
StringRegExpReplace($aFiles[$iFile], "(_REGISTRY_MACHINE_\.?)", "")

Но для _REGISTRY_USER_.DEFAULT мой шаблон почему то не работает - строка остается как есть. Подскажите, пожалуйста, что тут не так? :(
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$file=FileRead(@ScriptDir&'\123')
$str=StringRegExpReplace($file,'.*(_\.?\S+)','\1')
MsgBox(0,'',$str)
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Все исправил :smile:
Код:
StringRegExpReplace($aFiles[$iFile], "(_REGISTRY_[A-Z]*_\.?)", "")

Ступил, не углядел что строки то разные, блин. (пересидел за писанием проги). Извиняюсь.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Код:
StringRegExpReplace($text, "(_REGISTRY_(MACHINE|USER)_\.?)", "")
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вариант с массивом :
Код:
#Include<Array.au3>
$sText = "_REGISTRY_MACHINE_SAM"  & @CRLF & _ 
"_REGISTRY_MACHINE_SECURITY"  & @CRLF & _ 
"_REGISTRY_MACHINE_SOFTWARE"  & @CRLF & _ 
"_REGISTRY_MACHINE_SYSTEM"  & @CRLF & _ 
"_REGISTRY_USER_.DEFAULT"

$sPatern = "([^_\.]+?)(?:\R|\z)"
$aResult = StringRegExp( $sText, $sPatern, 3 )
_ArrayDisplay($aResult, ' Test Result ')
 
Верх