1

假设我有这个字符串:

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"

4

5 回答 5

5
var result=Regex.Replace(inputStr,@"(A*)A{2}(?!A)","$1");
于 2013-10-11T10:48:49.440 回答
2

尝试:

var result = Regex.Replace(inputStr, "(A*)AA", "$1");
于 2013-10-11T10:59:15.393 回答
1

如果你知道所有的 'words' 都是As,你可以使用这个替换:

var result=Regex.Replace(inputStr,@"AA\b","");

正则表达式替换的 regex101 演示


根据编辑,更一般的模式是:

var result=Regex.Replace(inputStr,@"AA(?!A)","");

正则表达式101演示

于 2013-10-11T10:58:51.200 回答
0

使用正则表达式虽然你并不真的需要它。

var result=Regex.Replace(inputStr,@"(?i)aa","AA");

(?i) 确保它检查所有情况下的 a。

于 2013-10-11T10:53:33.193 回答
0

虽然不是正则表达式,但它会起作用

String.Join(" ", inputStr.Split().Select(x => x.Substring(0, x.Length - 2)).ToArray());
于 2013-10-11T10:53:09.233 回答