Функция StringRegExpReplace

         Описание функции


StringRegExpReplace

Заменяет текст строки, используя регулярное выражение.

StringRegExpReplace ( "test", "pattern", "replace" [, count = 0 ] )

Параметры

test Строка для поиска
pattern Образец для поиска (шаблон). См. StringRegExp для создания шаблона.
replace Текст замены регулярного выражения. Чтобы вставить текст группы используйте, \0 - \9 (или $0 - $9) как обратную ссылку.
count [необязательный] Количество замен в строке. По умолчанию 0 - выполняет замену всех найденных образцов.

Возвращаемое значение

Успех:Возвращает строку преобразованную регулярным выражением. @extended содержит количество выполненных замен.
Ошибка:Устанавливает @error равным 2, что означает ошибку в регулярном выражении. @extended содержит позицию ошибочного символа в регулярном выражении.

Примечания

Для разделения обратных ссылок от фактических (заменяемых) чисел, обрамите ссылки фигурными скобками: "${1}5".
Если необходимо использовать обратную наклонную черту "\" в строке замены (параметр replace), она должна дублироваться "\\". Это является следствием использования обратных ссылок в строке замены.

См. также

StringRegExp, StringReplace

Пример

$sInput = 'Этот пример демонстрирует замену гласных на символ "-"'
$sOutput = StringRegExpReplace($sInput, "[аяэеоёуюиы]", "-")
MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput)

; Использование обратных-ссылок на группы ($1, $2, $3)
$sInput = 'Дата: 12/31/2009 01:02:03'
$sOutput = StringRegExpReplace($sInput, '(\d{2})/(\d{2})/(\d{4})', ' $2.$1.$3 ')
MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput)

$sInput = 'Удаляет <i>теги</i> в html'
$sOutput = StringRegExpReplace($sInput, '<i>(.*?)</i>', '\1')
MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput)

$sInput = 'Удаляет' & @LF & @LF & @LF & 'пустые строки'
$sOutput = StringRegExpReplace($sInput, '(\r\n|\r|\n){2,}', '\1')
MsgBox(0, "Результат до и после", $sInput & @LF & '--------------' & @LF & $sOutput)

; Разбивает число на группы по 3 символа
$sInput = '56868797689645'
$sOutput = StringRegExpReplace($sInput, '(\A\d{1,3}(?=(\d{3})+\z)|\d{3}(?=\d))', '\1 ')
MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput)

; Получает имя файла без расширения
$sInput = 'D:\Docum\File.au3'
$sOutput = StringRegExpReplace($sInput, '^(?:.*\\)([^\\]*?)(?:\.[^.]+)?$', '\1')
MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput)