You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则如何匹配到第一个'World'时停止匹配?

解决方案

问题根源在于正则表达式的贪婪匹配特性:[\w\W]+会尽可能匹配最多的字符,所以它会从第一个空格后一直匹配到字符串末尾的World,导致结果包含了多余的内容。要让匹配在遇到第一个World时就停止,只需切换为非贪婪模式,或使用更精准的匹配规则:

方法一:给量词添加非贪婪修饰符

将原有的[\w\W]+改为[\w\W]+?,?会让量词匹配最少的字符以满足规则。修改后的代码如下:

import re

test_string = "Hello Hello World World"
pattern = "Hello World".replace(" ", "[\w\W]+?")
match = re.search(pattern, test_string)
print(match.group())  # 输出:Hello Hello World

方法二:用更简洁的等价写法(推荐)

[\w\W]+等价于匹配任意字符的.(默认不匹配换行符,若需匹配换行可添加re.DOTALL参数),同样搭配非贪婪量词?即可:

import re

test_string = "Hello Hello World World"
pattern = "Hello World".replace(" ", ".+?")
match = re.search(pattern, test_string)
print(match.group())

方法三:针对空白场景的精准匹配

如果两个目标词之间只有空白字符(无特殊符号),可以用\s+?匹配最少的空白序列,更贴合实际场景:

import re

test_string = "Hello Hello World World"
pattern = "Hello World".replace(" ", "\s+?")
match = re.search(pattern, test_string)
print(match.group())

内容的提问来源于stack exchange,提问作者Muhammad Samadzade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:13:09