我正在尝试以
的形式从网址中提取ID号http://www.domain.com/some-slug-here/person/237570
http://www.domain.com/person/237570
这些网址中的任何一个也可以在它们上面加上参数
http://www.domain.com/some-slug-here/person/237570?q=some+search+string
http://www.domain.com/person/237570?q=some+search+string
我已经尝试过以下表达式从上面的网址中捕获'237570'的id值,但每种方法都有效,但确实适用于所有四个网址场景。
(?<=person\/)(.*)(?=\?)
(?<=person\/)(.*)(?=\?|\z)
(?<=person\/)(.*)(?=\??*)
我所看到的是它正在获得237570,但包括?和在网址后面的字符。当你点击?,/或字符串的结尾时,怎么说停止捕捉?
答案 0 :(得分:2)
字符串:
http://www.domain.com/some-slug-here/person/1234?q=some+search+string
http://www.domain.com/person/3456?q=some+search+string
http://www.domain.com/some-slug-here/person/5678
http://www.domain.com/person/7890
正则表达式:
person\/(\d{1,})
输出:
>>> regex.findall(string)
[u'1234', u'3456', u'5678', u'7890']
答案 1 :(得分:1)
请勿使用.*
来匹配ID。 .
将匹配任何字符(换行符除外,除非您使用DOTALL选项)。只需匹配一堆数字:(.*)
- &gt; (\d+)