Skip to main content
 首页 » 编程设计

python之在 python 中使用正则表达式查找字符串

2025年05月04日23sxdcgaq8080

我正在尝试查找字符串 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

如果您使用否定字符类,信息框内的任何 { 或 } 都将阻止匹配整个子字符串。

此外,由于您似乎不需要您需要的子字符串前后的子字符串,因此您根本不需要匹配(或捕获)它们(因此,我删除了它们)。