正则表达式匹配字符串中的数字特定数字

时间:2014-03-27 08:56:03

标签: regex

我试图修复我创建的正则表达式。

我有一个这样的网址:

http://www.demo.it/prodotti/822/Panasonic-TXP46G20E.html

我必须匹配产品ID(822)。

我写这个正则表达式

(?<=prodotti\/).*(?<=\/)

,结果是&#34; 822 /&#34;

我的匹配始终是两组之间的一组数字/ /

1 个答案:

答案 0 :(得分:2)

你快到了!

只需使用:

(?<=prodotti\/).*?(?=\/)

而不是:

(?<=prodotti\/).*(?<=\/)

你很好;)

看到它正常工作here on regex101


我实际上只是改变了两件事:

  1. 通过匹配的 lookahead 替换了您的 lookbehind (?<=\/))...因此它断言我们可以匹配/ AFTER .*消耗的最后一个字符。
  2. 使用greediness代替.*?更改了匹配模式的.*。如果没有更改,如果网址在/之后有多个prodotti/,则您不会停止到第一个。{
    即,给定输入字符串:http://www.demo.it/prodotti/822/Panasonic/TXP46G20E.html,它将匹配822/Panasonic