Python:重复查找两个字符串之间的字符串

时间:2017-02-17 16:11:51

标签: python regex string

我是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"]这样的列表。 我该怎么办?

2 个答案:

答案 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)