1

我正在寻找一种基于带有分组的正则表达式进行替换的方法,但这只会替换该组。例如,如果我有:

string = "xxxab yyyyab zzzab xxab"

我想这样称呼:

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

并获得:

string = "xxxAB yyyyab zzzab xxAB"

非常欢迎使用 java、perl、python 和 awk 中的任何“短”解决方案!到目前为止,我能够使用 index_of 等来实现这一点,但我希望那里有某种单线:)

4

2 回答 2

4

你想要的是一个积极的后向断言

ab 仅当它前面有 时才 匹配和替换xx

您可以使用以下正则表达式来匹配这样的ab

(?<=xx)ab

Perl 中的工作示例

Java中的工作示例

于 2011-03-11T18:50:51.790 回答
1

如果字符串不会变得更复杂:

>>> 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'
于 2011-03-11T18:52:54.900 回答