[英]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.