我需要解析一个网址,然后从以下网址获取1585710:
http://www.example.com/0/100013573/1585710-key-description-goes-here
这意味着它介于最后一个/之前 - 和第一个之间 -
我对正则表达式的经验很少,这对我来说是一个非常难以理解的概念。
非常感谢任何帮助或帮助
编辑:使用Python。
答案 0 :(得分:7)
使用以下正则表达式并从组索引1中获取数字。
^.*\/([^-]*)-.*$
代码:
>>> import re
>>> s = "http://www.example.com/0/100013573/1585710-key-description-goes-here"
>>> m = re.search(r'^.*\/([^-]*)-.*$', s, re.M)
>>> m
<_sre.SRE_Match object at 0x7f8a51f07558>
>>> m.group(1)
'1585710'
>>> m = re.search(r'.*\/([^-]*)-.*', s)
>>> m.group(1)
'1585710'
>>> m = re.search(r'.*\/([^-]*)', s)
>>> m.group(1)
'1585710'
<强>解释强>
.*\/
匹配最后一个/
符号的所有字符。([^-]*)
捕获-
零次或多次的任何字符。-.*
匹配所有剩余的字符。group(1)
包含第一个捕获组捕获的字符。打印组(1)将得到所需的结果。答案 1 :(得分:1)
好吧,如果您需要在/
和-
之间找到任何字符串,您可以这样做:
/.*-
由于.
是任何字符,*
是任何数量。但是,这会带来一个问题,因为您可以获得整个/www.example.com/0/100013573/1585710-key-description-goes
,它位于/
和-
之间。那么,您需要做的是搜索不是/
和-
的任何内容:
/[^/-]*-
^
表示否,[]
之间的任何内容大致都是OR列表。
希望有所帮助。
编辑:不,正如用户rici所提到的那样,如果您的网址名称中包含-
(例如www.lala-lele.com
),则无法提供帮助。
为了确保您获得的是最后一个/
,您可以匹配其余的字符串,确保其中没有任何/
直到结尾({{1} }},如:
$
而且,要获得其中的字符串,您可以:
/[^/-]*-[^/]*$
由于/\([^/-]*\)-[^/]*$
和\(
指定了您想要的正则表达式输出。
答案 2 :(得分:1)
您可以使用匹配的组来使用正则表达式\/(\d+)-
提取数字:
import re
s = 'http://www.example.com/0/100013573/1585710-key-description-goes-here'
m = re.search(r'\/(\d+)-', s)
print m.group(1) # 1585710
查看 Fiddler