我无法理解如何解决以下问题:
我有输入字符串“aaaabaa”,我正在尝试搜索字符串“aa”(我正在寻找字符的位置) 预期结果是 0 1 2 5
- aa aaba
- 一个aa abaa
- aa aa 咩
- aaaab aa
我已经使用另一种方法(非正则表达式)解决了这个问题。 但是我需要一个 RegEx 我是 RegEx 的新手所以谷歌搜索真的帮不了我。 任何帮助表示赞赏!谢谢!
附言
我尝试使用 (aa)*
和 "\b(\w+(aa))*\w+"
但这些表达式是错误的
最佳答案
你可以通过使用前瞻来解决这个问题
a(?=a)
将找到每个“a”后跟另一个“a”。
如果你想更普遍地这样做
(\p{L})(?=\1)
这将找到后跟相同字符的每个字符。每个找到的字母都存储在一个捕获组中(因为周围有括号),这 capturing group然后被 positive lookahead assertion 重用((?=...)
)通过使用 \1
(在 \1
中存储了匹配字符)
\p{L}
是类别为“字母”的 unicode 代码点
代码
String text = "aaaabaa";
Regex reg = new Regex(@"(\p{L})(?=\1)");
MatchCollection result = reg.Matches(text);
foreach (Match item in result) {
Console.WriteLine(item.Index);
}
输出
0
1
2
5
关于c# - 如何查找重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294673/