匹配 3 个或更多连续连续字符和连续相同字符的正则表达式

新手上路,请多包涵

我需要正则表达式来匹配以下情况。

  1. 3个或更多连续的连续字符/数字;例如 123、abc、789、pqr 等。
  2. 3个或更多连续相同的字符/数字;例如 111、aaa、bbb、222 等。

原文由 sandy0093 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
1 个回答

我认为您不能(轻松地)在第一种情况下使用正则表达式。第二种情况很简单:

 Pattern pattern = Pattern.compile("([a-z\\d])\\1\\1", Pattern.CASE_INSENSITIVE);

Since \\1 represents part matched by group 1 this will match any sequence of three identical characters that are either within the range a-z or are digits ( \d )。

更新

明确地说,您 可以 对第一种情况使用正则表达式。然而,该模式是如此费力和可笑地错综复杂,你最好不要这样做。特别是如果您想真正涵盖所有字母表。在那种情况下,您可能应该通过迭代 Unicode 字符集或类似字符的字符代码以编程方式生成模式,并为每三个连续字符生成分组。但是,您应该意识到,通过为模式匹配器生成如此大的决策树,行进性能必然会受到影响( O(n) 其中 n 是组的数量Unicode 字符集的大小减去 2)。

原文由 Milad Naseri 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题