繁体   English   中英

python正则表达式模式提取两个字符之间的值

[英]python regex pattern to extract value between two characters

我试图以url的形式从URL中提取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值,但是每一个都有效,但确实可以在所有四个url场景中工作。

(?<=person\/)(.*)(?=\?)
(?<=person\/)(.*)(?=\?|\z)
(?<=person\/)(.*)(?=\??*)

我所看到的是它正在获得237570,但包括? 和在网址后面的字符。 当你点击?,/或字符串的结尾时,我怎么能说停止捕获?

串:

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']

不要使用.*来匹配ID。 . 将匹配任何字符(换行符除外,除非您使用DOTALL选项)。 只需匹配一堆数字: (.*) - > (\\d+)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM