替换以“a”开头、包含一个或多个“a”的单词;B”;以C结尾

本文关键字:单词 结尾 开头 包含一 替换 | 更新日期: 2023-09-27 17:57:25

我想写一个正则表达式来替换

AAA XXX BBB XXX CCC

带有

AAACCC

XXX可以是任何字符,并且必须在AAA和BBB之间有一个或多个BBB,该怎么办?

示例:

before: AAA hello world BBB hello CCC
after: AAACCC
before: AAA hello world hello CCC
after: AAA hello world hello CCC
before: AAA hello BBB world BBB hello CCC
after: AAACCC

替换以“a”开头、包含一个或多个“a”的单词;B”;以C结尾

在c#中:

string text = Regex.Replace( inputString, @"AAA.+BBB.+CCC", "AAACCC" );

输入:

AAA hello world BBB hello CCC 
AAA hello world hello CCC
AAA hello BBB world BBB hello CCC

输出:

AAACCC 
AAA hello world hello CCC
AAACCC

要搜索的模式:

AAA.+?BBB.+?CCC

替换字符串:

AAACCCC

诀窍在于.+?,它是一个非贪婪闭包,因此它将在下一场比赛而不是最后一场比赛中停止。

我会使用前瞻:

string text = Regex.Replace( input, @"AAA(?=.*BBB).+?CCC" );

输入字符串:

AAA hello world BBB hello CCC 
AAA hello world hello CCC
AAA hello BBB world BBB hello CCC
AAA hello BBB world BBB hello CCC AAA hello BBB world BBB hello CCC
AAABBBCCC

输出:

AAACCC 
AAA hello world hello CCC
AAACCC
AAACCC AAACCC
AAACCC