我有这样的网址domain.com/news-343dds-this-is-test
我想提取新闻ID 343dds
,
所以我试着用正则表达式
这是我用/news-(.+)-/
但结果就像这个343dds-this-is
。我只想获得343dds
。
答案 0 :(得分:6)
(.+)
正在贪婪并与输入的其余部分相匹配。将其更改为(.+?)
以使其不贪婪。
答案 1 :(得分:1)
Jeremy Hanlon的解决方案显然有效,但不是最推荐的解决方案。
您最好使用([^-]+)
。
即使在诸如此SO问题的简单情况下它可能无关紧要,但是懒惰量词+?
具有步骤数与搜索部分的大小成比例的不便,因此它可能广泛影响表现。
这清楚地解释了here。
示例:
(.+?)
密钥,343dds
needs 22 steps
(.+?)
needs 68 steps获取更长的密钥,例如thisIsASignificativelyLongKey
([^-]+)
needs 12 steps仅适用于任何密钥