c# - 如何查找重复字符

标签 c# regex

我无法理解如何解决以下问题:

我有输入字符串“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/

相关文章:

c# - InstallShield - 为所有用户设置目录权限

c# - .Net 4 图表控件问题

regex - 验证Active Directory默认密码复杂性的正则表达式

r - 为什么 gsubfn 会省略部分匹配项?

Python 正则表达式识别字符串中的城市名称

c# - 比较数据集中的单元格和前置信息

c# - asp.net mvc 4代码首先: How to auto save complex model with lists of models in it?

c# - xsd.exe 在 OFX2 架构上运行时生成重复属性

javascript - 正则表达式用于有限的数字,无限的中间破折号?

javascript - 去除 HTML 标签,但保留内容(javascript/jquery)