2010-09-28 124 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 
>>> 
相關問題