如何获得正则表达式模式以连续匹配?

ℕʘʘḆḽḘ

考虑这个简单的例子

http://time.com/this-time-is-different

在这里我想匹配诸如的序列this-time-is-different

也就是说,单词的任何序列后跟a -,该序列至少重复三次。因此,在该示例中,该序列word-仅重复了3次this-time-is-different

但是,当我使用时[-\w]{3,},会得到太多的匹配项,例如http甚至没有-

在此处输入图片说明

怎么了 谢谢!

维克多·史翠比维

[-\w]{3,}图案是一个字符类匹配一个连字符一个词炭,三个或多个连续出现。因此,它匹配-----w--wwd234_23---例如字符串等。您会发现,这些字符可能以任何顺序出现。

您可以在此处使用分组构造:

\w+(?:-\w+){2,}

请参阅regex演示在这里,(?:-\w+){2,}是一个非捕获组,它匹配两个或多个连续出现的连字符,后跟一个或多个单词字符。

细节

  • \w+ -一个或多个字母,数字或 _
  • (?:-\w+){2,} -与2个或多个连续出现的匹配的非捕获组
    • - -连字符
    • \w+-一个或多个字母,数字或_

如果-可以连续出现,例如a--b----d,您可以在+后面加上-1个或多个匹配项:

\w+(?:-+\w+){2,}

参见另一个正则表达式演示

尽管如此,使用分组构造,您仍可以确保-s应该出现在至少1个单词字符之后,并且必须紧随其后的是至少1个单词字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章