我想写一个正则表达式替换
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
答案 0 :(得分:4)
在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
答案 1 :(得分:4)
要搜索的模式:
AAA.+?BBB.+?CCC
替换字符串:
AAACCCC
诀窍在.+?
,这是一个非贪婪的闭包,所以它会在下一场比赛时停止,而不是最后一场比赛。
答案 2 :(得分:0)
我使用前瞻:
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