簡體   English   中英

Python:在兩個字符串之間找到一個字符串,重復

[英]Python: Find a string between two strings, repeatedly

我是 Python 新手,仍在學習正則表達式,所以這個問題對一些正則表達式專家來說可能聽起來微不足道,但你去吧。 我想我的問題是關於在兩個字符串之間查找字符串的問題的概括。 我想知道:如果這個模式(initial_substring + substring_to_find + end_substring)在一個長字符串中重復多次怎么辦? 例如

test='someth1 var="this" someth2 var="that" '
result= re.search('var=(.*) ', test)
print result.group(1)
>>> "this" someth2 var="that"

相反,我想得到一個像["this","that"] 我該怎么做?

使用re.findall()

result = re.findall(r'var="(.*?)"', test)
print(result)  # ['this', 'that']

如果test字符串包含多行,請使用re.DOTALL標志。

re.findall(r'var="(.*?)"', test, re.DOTALL)

您當前regex的問題在於捕獲組(.*)是一個非常貪婪的語句。 在字符串中var=的第一個實例之后,該捕獲組將獲得它之后的所有內容。

如果您改為將表達式的泛化減少到var="(\\w+)" ,您將不會遇到相同的問題,因此將那行python更改為:

result = re.findall(r'var="([\w\s]+)"', test)

暫無
暫無

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

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