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

必要なのは、肯定的な後読み assertionです。

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 に答える