Что нового

[RegExp] Пропадает первый русский символ

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
Подскажите пожалуйста почему так происходит и как это исправить.
Вставляю в начало строк нужную русскую фразу с помощью StringRegExpReplace, но почему-то пропадает первый символ

пример:
Код:
$sLine="111" & @CRLF & "222" & @CRLF & "333"
$sLine=StringRegExpReplace($sLine,"(\A|\r\n)","$1привет")
MsgBox(4096, "Переменная ", "$sLine =>" & $sLine & "<=")


в начало строк вставляется "ривет", вместо привет

если вставить hello, то всё нормально.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Andrey_A,
У меня Ваш код выдает привет. А если так?
Код:
$sLine = '111' & @CRLF & '222' & @CRLF & '333'
$sLine = StringRegExpReplace($sLine, '(\A|\r\n)', '${1}привет')
MsgBox(4096, 'Переменная ', '$sLine =>' & $sLine & '<=')
 
Автор
A

Andrey_A

Продвинутый
Сообщения
325
Репутация
68

в моём варианте:

sym1.gif


со скобками:

sym2.gif
 
Автор
A

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
madmasles, спасибо, помогло! Сразу не обратил внимание.
Только почему так ведёт себя StringRegExpReplace? Или это описано где-то
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Andrey_A [?]
почему так ведёт себя StringRegExpReplace?
По идее, только цифры нужно экранировать, но, похоже, что лучше экранировать все, что добавляешь. Почему так, не знаю.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Я бы упростил выражение :
Код:
$sLine="111" & @CRLF & "222" & @CRLF & "333"
$sLine=StringRegExpReplace($sLine,"(?m)^","привет")
MsgBox(4096, "Переменная ", "$sLine =>" & $sLine & "<=")
 
Верх