2010-09-28 141 views
0

对不起,我知道这可能是一个重复,但搜索'python正则表达式匹配之间'我还没有找到任何答案我的问题!两个字符串之间的字符串的正则表达式?

的文件(其中明确,是一个长期的HTML页面)我在寻找有弦的这一大堆(一个JavaScript函数中)看起来像这样:

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

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

要得到的联系,我知道我需要开始:

re.matchall(regexp, doc_sting) 

但是应该regexp是什么?

+0

您是否正在使用JSON? – 2010-09-28 08:57:27

+0

看起来像JSON数据用';'而不是','给我(当我试图想象文档的其余部分时)。 Python已经集成了JSON支持。 – Residuum 2010-09-28 08:57:28

+0

这是一个长的HTML页面,其中包含一些JavaScript – AP257 2010-09-28 09:19:24

回答

3

问题的答案取决于字符串的其余部分的外观。如果他们都是这样link: '<URL>'};,那么你可以把它非常简单使用简单的字符串操作做:

myString = "link: '/Hidden/SidebySideGreen/dei1=1204970159862'};" 
print(myString[7:-3]) 

(如果你只是有一个字符串,多行的,你只能分割字符串转换成线。 )

如果它有点复杂,但使用正则表达式很好。只是查找引号内的网址一个例子是:

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

print(re.findall("'([^']+)'", myDoc)) 

取决于整个字符串的外观,您可能需要包括link:还有:

print(re.findall("link: '([^']+)'", myDoc)) 
1

我下手:

regexp = "'([^']+)'"

并检查它是否工作正常 - 我的意思是,如果唯一的条件就是串在之间'一条线,应该是不错的,因为它是。

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 
>>> 
相关问题