【问题标题】:Capture repeating, comma-separated strings in regex在正则表达式中捕获重复的逗号分隔字符串
【发布时间】:2017-02-28 21:36:00
【问题描述】:

我需要捕获一行(或输入字符串)中可用的多个短语。
假设输入是=“这是描述,这是描述”
所以我需要检测字符串“这是描述”在输入中重复了两次。

这是我迄今为止尝试过的正则表达式

(.*).*\1

但它匹配没有精确重复的输入,例如“这是描述,更多文本,这是描述”

【问题讨论】:

  • 为什么不起作用?它is.
  • 正则表达式会告诉你在模式中出现的字符串。在您的示例中,您在一个字符串中人为地声明了 2 个短语。您的代码应该如何知道这一点?您应该首先将不同的短语分成各自的字符串,然后单独测试每个字符串。

标签: java regex backreference


【解决方案1】:

查找重复的逗号分隔字符串:

(.+?),\1

查找任意数量的重复值(逗号分隔):

(.+?)(?:,\1)+

这些工作通过对第一个逗号进行非贪婪匹配,然后在逗号后重复。

【讨论】:

  • 谢谢,但这些也捕捉到了我的要求,我不想像“这是测试,这不是测试”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多