PDA

Показать полную графическую версию : [решено] Расширенная замена StringRegExpReplace


ALFERIUS
28-08-2009, 17:07
Здравствуйте,

Интересует вопрос, есть ли возможность использовать шаблоны не только при поиске, но и при подстановке?
Т.е. в поле замена мне нужно подставить "искомый текст".

Спасибо.

amel27
28-08-2009, 17:25
ALFERIUS, слишком туманно, можно конкретный пример?

ALFERIUS
28-08-2009, 17:43
Извиняюсь, решил другим способом.

Оригинальный файл выложить не могу. Придумывать долго.
Искал аналог замены как в линуксовом sed
если находит в тексте (шаблон поиска 1)(шаблон поиска 2)(шаблон поиска 3) то заменить на (то что нашли в первом шаблоне)(то что нашли во третьем шаблоне)

Спасибо.

Iska
28-08-2009, 19:04
ALFERIUS, это же есть. Смотрите в:


( ... ) : Group. The elements in the group are treated in order and can be repeated together. e.g. (ab)+ will match "ab" or "abab", but not "aba". A group will also store the text matched for use in back-references and in the array returned by the function, depending on flag value.
и в:


replace: The text to replace the regular expression matching text with. To insert matched group text, \0 - \9 (or $0 - $9) can be used as back-references.

ALFERIUS
03-09-2009, 10:55
Подскажите пожалуйста,

есть текст:
...
00:00:13 AT&O11*D/345634563456/,3E,,,'354635ВВ'
00:00:13 OK:49,0,11
...

Ищу
$text=StringRegExpReplace($sFile,("'")&(@CRLF)&(.*"OK:".*), $1&$3 )

т.е. апостроф, возврат каретки, любое число символов, ОК:, люьое число символов хочу заменить на искомый текст без возврата каретки.

Не могу победить ошибку
$text=StringRegExpReplace($sFile,("'")&(@CRLF)&(.*"OK:"), $1&$3 )
$text=StringRegExpReplace($sFile,("'")&(@CRLF)&(.*"OK:"), $1&$3 ^ ERROR

на что он ругается?
Или как можно решить ситуацию по другому?
Спасибо.

Со скобкой решил,
Теперь ругается на замену
$text=StringRegExpReplace($sFile,("' ")&(@CRLF)&(.*"OK:".*), $1&$3)
$text=StringRegExpReplace($sFile,("' ")&(@CRLF)&(.*"OK:".*), ^ ERROR

amel27
03-09-2009, 11:11
апостроф, возврат каретки, любое число символов, ОК: »
$sFile = "00:00:13 AT&O11*D/345634563456/,3E,,,'354635ВВ'"&@CRLF
$sFile &= "00:00:13 OK:49,0,11"

$sText = StringRegExpReplace($sFile, "'\r\n(.*?OK:)", "'$1")
ConsoleWrite($sText &@CRLF)




© OSzone.net 2001-2012