我是Python新手并且仍然在学习正则表达式,所以这个问题对于一些正则表达式专家来说可能听起来微不足道,但是你走了。 我想我的问题是对this question about finding a string between two strings的概括。我想知道:如果这个模式(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"]
这样的列表。
我该怎么办?
答案 0 :(得分:3)
使用re.findall()
:
result = re.findall(r'var="(.*?)"', test)
print(result) # ['this', 'that']
答案 1 :(得分:1)
当前regex
的问题在于捕获组(.*)
是一个非常贪婪的声明。在您的字符串中第一个var=
实例后,该捕获组将在其后获得 所有内容 。
如果您将表达式的泛化减少到var="(\w+)"
,则不会出现同样的问题,因此将python
的那一行更改为:
result = re.findall(r'var="([\w\s]+)"', test)