регулярное выражение заменить группу (Java, Python, Perl, AWK) - PullRequest
1 голос
/ 11 марта 2011

Я ищу способ сделать замену, основанную на регулярном выражении с группировкой, но это только заменит группу.Например, если у меня есть:

string = "xxxab yyyyab zzzab xxab"

, я хочу вызвать что-то вроде:

replace_all_group(string, /xx(ab)/,"AB")

и получить:

string = "xxxAB yyyyab zzzab xxAB"

любое «короткое» решение вJava, Perl, Python и AWK очень приветствуются!до сих пор мне удавалось добиться этого с помощью index_of и тому подобного, но я надеюсь, что где-то там есть какой-то однострочный текст:)

Ответы [ 2 ]

4 голосов
/ 11 марта 2011

То, что вы хотите, - это положительное утверждение с подтверждением .

Совпадение и замена ab , только если ему предшествует xx.

Вы можете использовать следующее регулярное выражение для сопоставления с таким ab:

(?<=xx)ab

Рабочий пример в Perl

Рабочий примерна Java

1 голос
/ 11 марта 2011

Если строка не станет более сложной:

>>> re.sub("xxab", "xxAB", "xxxab yyyyab zzzab xxab")
'xxxAB yyyyab zzzab xxAB'

Или версия ответа @ codaddict на python:

>>> re.sub("(?<=xx)ab", "AB", "xxxab yyyyab zzzab xxab")
'xxxAB yyyyab zzzab xxAB'
...