Показать полную графическую версию : [решено] StringRegExpReplace - очистить строку при наличии контрольного слова
Суть вопроса: нужен паттерн, чтобы при отсутствии в строке определенного слова
(в примере "test") StringRegExpReplace возвращал пустую строку.
Типа:
$str='Script Start'
MsgBox(0,'',StringRegExpReplace($str,'^(.*test.*){0}$',''))
Естественно пример не рабочий
чтобы при отсутствии в строке определенного слова
(в примере "test")... возвращал пустую строку. »
Тебе для этого лучше использовать: StringInStr
Тебе для этого лучше использовать: StringInStr »
Да, со StringInStr можно сделать без проблем, но надо с StringRegExpReplace
Тему закрываю в связи с нарушением пункта 2.7 общих правил (http://forum.oszone.net/rules.html).
В ПМ принимается предложение по новому названию темы, пример того как может именоваться подобная тема, можно увидеть тут (http://forum.oszone.net/thread-148655.html).
Тема переименована по предложению asdf8 и открыта.
нужен паттерн, чтобы при отсутствии в строке определенного слова
(в примере "test") StringRegExpReplace возвращал пустую строку »
А почему именно Replace? Ну можно так:
$sStr = 'Script Start'
$sInStr = 'test'
MsgBox(0, '', StringRegExpReplace($sStr, '(.*' & $sInStr & '.*)|.*$', '\1'))
Спасибо beve , что откликнулся в ПМ
$str='Script Start test'
$pattern="test"
If StringRegExpReplace($str,'.*('&$pattern&').*','\1') ==$pattern Then
MsgBox(0,"","есть такое слово")
Else
MsgBox(0,"","")
EndIf
Еще раз опишу суть проблемы. В начале работы скрипта вводятся несколько регю выражений (каждый раз разные),
Далее в цыкле производится обработка массива строк функцией StringRegExpReplace по заданным паттернам и нет никакой возможности обрабатывать другие условия - это полностью ломает первоначальную концепцию
Ну можно так: »
Вот это кажись то-что надо!
asdf8, еще вариант:
$str = "Script Start"
$tst = "test"
$out = StringRegExpReplace($str,'^.*?(?:(\Q'& $tst &'\E).*|$)','\1')
ConsoleWrite($out &@CRLF)
Спасибо всем ответившим
amel27 - спасибо за ответ, в принципе пример работает, но видимо я сам
не упомянул, что в обратном случае должна возвращаться оригинальная строка.
Вопрос считаю решенным, тему - закрытой.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.