我正在尝试查找字符串 s 的子字符串,以 {{Infobox
开头并以 }}
结尾。我尝试使用正则表达式执行此操作,但没有得到任何结果。我认为错误出在我的正则表达式中,但由于我对正则表达式很陌生,所以我希望有人可以帮助解决这个问题。字符串 s 例如:
s = '{{blabla}}{{Infobox persoon Tweede Wereldoorlog| naam=Albert Speer| afbeelding=Albert Speer Neurenberg.JPG}}{{blabla}}'
result = re.search('(.*)\{\{Infobox (.*)\}\}(.*)', s)
if result:
print(result.group(2))
最佳答案
您可以使用惰性点匹配,因为您的定界符不是单符号定界符,并将您需要的内容捕获到第 1 组中:
import re
p = re.compile(r'\{\{Infobox\s*(.*?)}}')
test_str = "{{blabla}}{{Infobox persoon Tweede Wereldoorlog| naam=Albert Speer| afbeelding=Albert Speer Neurenberg.JPG}}{{blabla}}"
match = p.search(test_str)
if match:
print(match.group(1))
参见 IDEONE demo
如果您使用否定字符类,信息框内的任何 {
或 }
都将阻止匹配整个子字符串。
此外,由于您似乎不需要您需要的子字符串前后的子字符串,因此您根本不需要匹配(或捕获)它们(因此,我删除了它们)。
关于python - 在 python 中使用正则表达式查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100481/