簡體   English   中英

兩個字符串之間的字符串的正則表達式?

[英]Regular expression for string between two strings?

抱歉,我知道這可能是重復的,但是在搜索“之間的python正則表達式匹配”之后,我沒有找到任何能回答我問題的信息!

我正在搜索的文檔(很清楚,是一個長長的HTML頁面)在其中(在JavaScript函數中)包含一串字符串,看起來像這樣:

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

我想提取鏈接(即這些字符串中的引號之間的所有內容)-例如/Hidden/SidebySideYellow/dei1=1204970159862

要獲取鏈接,我知道我需要開始:

re.matchall(regexp, doc_sting)

但是正則regexp應該是什么?

您問題的答案取決於字符串其余部分的外觀。 如果它們都像此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 ) )

我將從以下內容開始:

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

並檢查它是否可以正常工作-我的意思是,如果唯一的條件是字符串位於''之間的一行中,那么它應該是正確的。

使用一些簡單的拆分

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM