【问题标题】:Regular Exp find duplicate phrases 2 sequentially words in a pattern正则表达式在一个模式中查找重复的短语 2 个顺序单词
【发布时间】:2018-10-14 10:42:27
【问题描述】:

我想捕捉在一个模式中按顺序重复的 2 个单词

我希望能够在这种情况下捕获重复的单词"cancer cervical",因为它们是唯一按顺序重复的 2 个单词。

模式"cancer cervical diane mortality cervical cancer cervical diane sea"

我使用了这个正则表达式,但仍然无法捕捉到 2 个顺序重复的单词。

/(\W|^)(.+)\s\2/ig

【问题讨论】:

  • 为什么不服黛安,还重复呢?
  • 你的意思是一个单词的部分是重复的吗?如cancer 末尾的cer 匹配cervical 开头的cer
  • 为什么不cancer cervical diane?他们重复
  • 是的,你是对的,在这种情况下重复“癌症宫颈黛安”。
  • 如果你只需要可以试试/(\b\w+\s\w+\b).+?\1/

标签: php regex duplicates


【解决方案1】:

这应该能够完成这项工作:/(\w+\s\w.*)\s.*\1/ 如果您正在处理包括数字在内的单词。

var string = "cancer cervical diane mortality cervical cancer cervical diane sea";
var regex = /(\w+\s\w.*)\s.*\1/;
console.log(string.match(regex));

var string = "cancer cervical diane mortality cervical cancer cervical diane sea";
var string1=" this is a test cancer cervical cancer diane mortality cervical cancer cervical diane sea";
var string2=" test whether it will catch one word cancer mortality cervical cancer cervical diane sea";
var regex = /(\w+\s\w.*)\s.*\1/;
console.log(string.match(regex));
console.log(string1.match(regex));
console.log(string2.match(regex));

【讨论】:

【解决方案2】:

听起来您只是在寻找/(.+)\s\1/

这将匹配由空格分隔的任何字符。

在您的示例中,它将匹配 cancercervicalcer

var string = "cancer cervical diane mortality cervical cancer cervical diane sea";
var regex = /(.+)\s\1/;
console.log(string.match(regex));

这也可以在 Regex101 here 上看到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 2015-06-02
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多