很抱歉,我知道这可能是重复的,但是搜索了'python正则表达式之间的匹配'我还没找到任何能回答我问题的内容!
文档(要说清楚,是一个很长的HTML页面)我正在搜索其中有一大堆字符串(在JavaScript函数中),如下所示:
link: '/Hidden/SidebySideGreen/dei1=1204970159862'};
link: '/Hidden/SidebySideYellow/dei1=1204970159862'};
我想提取链接(即这些字符串中的引号之间的所有内容) - 例如/Hidden/SidebySideYellow/dei1=1204970159862
要获取链接,我知道我需要从:
开始re.matchall(regexp, doc_sting)
但regexp
应该是什么?
答案 0 :(得分:3)
您的问题的答案取决于字符串的其余部分的外观。如果他们都像这样link: '<URL>'};
那么你可以使用简单的字符串操作非常简单:
myString = "link: '/Hidden/SidebySideGreen/dei1=1204970159862'};"
print( myString[7:-3] )
(如果您只有一个包含多行的字符串,则可以将字符串拆分为行。)
如果它有点复杂,使用正则表达式就可以了。只查找引号内的url的一个例子是:
myDoc = """link: '/Hidden/SidebySideGreen/dei1=1204970159862'};
link: '/Hidden/SidebySideYellow/dei1=1204970159862'};"""
print( re.findall( "'([^']+)'", myDoc ) )
根据整个字符串的外观,您可能还必须包含link:
:
print( re.findall( "link: '([^']+)'", myDoc ) )
答案 1 :(得分:1)
我从:
开始regexp = "'([^']+)'"
并检查它是否正常 - 我的意思是,如果唯一的条件是字符串在''之间的一行中,它应该是好的。
答案 2 :(得分:0)
使用一些简单的拆分
>>> s="link: '/Hidden/SidebySideGreen/dei1=1204970159862'};"
>>> s.split("'")
['link: ', '/Hidden/SidebySideGreen/dei1=1204970159862', '};']
>>> for i in s.split("'"):
... if "/" in i:
... print i
...
/Hidden/SidebySideGreen/dei1=1204970159862
>>>