两个字符串之间字符串的正则表达式

时间:2010-09-28 08:46:47

标签: python regex

很抱歉,我知道这可能是重复的,但是搜索了'python正则表达式之间的匹配'我还没找到任何能回答我问题的内容!

文档(要说清楚,是一个很长的HTML页面)我正在搜索其中有一大堆字符串(在JavaScript函数中),如下所示:

link: '/Hidden/SidebySideGreen/dei1=1204970159862'};
link: '/Hidden/SidebySideYellow/dei1=1204970159862'};

我想提取链接(即这些字符串中的引号之间的所有内容) - 例如/Hidden/SidebySideYellow/dei1=1204970159862

要获取链接,我知道我需要从:

开始
re.matchall(regexp, doc_sting)

regexp应该是什么?

3 个答案:

答案 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
>>>