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

Python正则表达式如何匹配特定单词前的内容?

嘿,这个需求我经常碰到,给你两种实用的正则解法,都能完美搞定你的问题!

方法1:用正向预查(Positive Lookahead)

这是正则里专门用来匹配「后面跟着特定内容的片段」的技巧,不需要捕获组就能直接拿到你要的结果。针对你的例子,正则可以这么写:

import re

text = "match.function"
# 正则表达式:匹配从开头到 .function 之前的所有内容,且不包含 .function
pattern = r'^.*?(?=\.function)'
match_result = re.search(pattern, text)

if match_result:
    print(match_result.group())  # 输出: match

解释下每个部分:

  • ^:锚定字符串开头,避免匹配到字符串中间的无关内容
  • .*?:非贪婪匹配任意字符(加问号是为了防止过度匹配,比如如果字符串是a.function.b.function,会匹配到第一个.function之前的a,而不是整个a.function.b)
  • (?=\.function):正向预查断言,确保当前位置后面紧跟着.function,但这个断言部分不会被包含在最终的匹配结果里

方法2:用捕获组(Capture Group)

如果你觉得预查有点绕,用捕获组会更直白,把你要的内容用括号包起来就行:

import re

text = "match.function"
# 把 .function 之前的内容用括号捕获,然后取第一个捕获组
pattern = r'(.*)\.function'
match_result = re.match(pattern, text)

if match_result:
    print(match_result.group(1))  # 输出: match

这里(.*)会贪婪匹配所有字符直到.function出现,group(1)就是我们捕获到的目标内容。不过要注意,如果字符串里有多个.function,这个方法会匹配到最后一个之前的所有内容(比如a.function.b.function会返回a.function.b),可以根据你的实际需求调整。

关键注意点

别忘了转义.!因为在正则语法里,.是匹配任意字符的通配符,要匹配字符串里实际的点号,必须写成\.。

内容的提问来源于stack exchange,提问作者Yaniv Haddad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:03:14