正则表达式 - 忽略捕获组中的特定字符串

时间:2016-10-20 23:33:30

标签: regex

我希望捕获www.my-website.com/buy/-PERMANENT.html之间的字符串(如果存在),但我很难这样做。我不确定如何创建一个忽略连续字符串的捕获组。到目前为止,我的尝试失败了。

www\.my-website\.com\/buy\/([^-PERMANENT.html]*)

www.my-website.com/buy/fork                          (Capture fork)
www.my-website.com/buy/wand                          (Capture wand)
www.my-website.com/buy/ball-PERMANENT.html           (Capture ball)
www.my-website.com/buy/bike-PERMANENT.html           (Capture bike)
www.my-website.com/buy/base-PERMANENT.html-ball      (Capture base)
www.my-website.com/buy/wall-PERMANENT.html-glue      (Capture wall)

2 个答案:

答案 0 :(得分:1)

如果您的网址非常简单,您可以使用延迟匹配,例如

www\.my-website\.com\/buy\/(.*?)(?:-PERMANENT.html|$)

请参阅demo

答案 1 :(得分:1)

你甚至不需要团体。此正则表达式的整个匹配是您的目标:

(?<=www\.my-website\.com\/buy\/).*?(?=-PERMANENT.html|$)

请参阅live demo