替换以“A”开头的单词,包含一个或多个“B”并以C结尾

时间:2014-04-09 01:17:04

标签: c# regex

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

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

3 个答案:

答案 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