假设我有这个字符串:
var inputStr="AAAA AAAAAAAA AAA AAAAA";
(这里的假设是我不知道字符串中每个'A ...'序列的大小。)
我需要一种简单的方法来减少该字符串中每个“A ...”序列的2个'A'字符
像:
var result=Regex.Replace(inputStr,...);
以便此示例的结果为:"AA AAAAAA A AAA"
)
感谢...
更新
感谢所有回复,
我想让这个问题更加笼统。
示例2:
var inputStr="bbbAAAAC1AAAAAAAA AAA AAAAArrr"
,结果应为:
"bbbAAC1AAAAAA A AAArrr"
答案 0 :(得分:5)
var result=Regex.Replace(inputStr,@"(A*)A{2}(?!A)","$1");
答案 1 :(得分:2)
尝试:
var result = Regex.Replace(inputStr, "(A*)AA", "$1");
答案 2 :(得分:1)
如果你知道所有'单词'都是A
s,你可以使用这个替换:
var result=Regex.Replace(inputStr,@"AA\b","");
regex101 demo for the regex replace
根据编辑,更一般的模式是:
var result=Regex.Replace(inputStr,@"AA(?!A)","");
答案 3 :(得分:0)
虽然不是正则表达式但它会起作用
String.Join(" ", inputStr.Split().Select(x => x.Substring(0, x.Length - 2)).ToArray());
答案 4 :(得分:0)
使用正则表达式虽然你真的不需要它。
var result=Regex.Replace(inputStr,@"(?i)aa","AA");
(?i)确保检查所有情况。