正则表达式匹配异常求助:无法提取目标内容如何解决?
提取字符串中的"Microsoft Edge"解决方案
你的正则表达式r"- .*?"使用了非贪婪匹配(.*?),它会尽可能早地停止匹配。因为没有设置结束锚点或后续匹配规则,所以每次只捕获到"- "部分,导致结果为['- ', '- ']。
方案1:调整正则表达式捕获最后一段内容
使用锚定到字符串末尾的正则表达式,匹配最后一个"- "之后的所有内容:
import re content = 'Unknown - abc - Microsoft Edge' p = re.compile(r"- (.*)$") result = p.findall(content)[0] # 获取唯一的匹配结果 print(result) # 输出: Microsoft Edge
这个模式r"- (.*)$"的作用:
-匹配最后一个连字符和空格(.*)捕获从该位置到字符串结束的所有字符$表示字符串结束位置
方案2:分割字符串(更简单的方法)
如果字符串始终以" - "作为分隔符,直接分割后取最后一个元素更直观:
content = 'Unknown - abc - Microsoft Edge' result = content.split(" - ")[-1] print(result) # 输出: Microsoft Edge
内容的提问来源于stack exchange,提问作者Danhui Xu
相关产品推荐
相关产品推荐

