如果破折号在字符串中连续n次,则正则表达式匹配

时间:2018-11-27 18:11:37

标签: python regex

如果包含破折号的字符串超过3次,我将尝试匹配该字符串:

string-has-4-dashes-example

此示例中的正则表达式不匹配:

string-has-3-dashes

不幸的是,这不起作用

.*-{3,}.*

我的目标是构建这样的正则表达式:

\/germany\/.*-(\d{3,}\.html|\/product\/view\/id.*)$

将匹配类似类型的URL

https://www.test.de/germany/bla-blub-test-example-new-2-189.html

但不是:

https://www.test.de/germany/test-this-1931.html

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来匹配具有3个以上连字符的字符串:

^(?:[^-]*-){4}

RegEx Demo

RegEx详细信息:

  • ^:开始
  • (?::启动非捕获组
    • [^-]*-:匹配0+个非连字符,后跟一个连字符
  • ):结束非捕获组。
  • {4}:匹配上述组的4个实例。

答案 1 :(得分:0)

您可以使用以下正则表达式:

^(?=(?:.*-){4,})

它从start of string开始,然后使用look ahead,查找:任意数量的任何字符。重复4 or more times