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

如何编写正则表达式匹配行首为//的指定单词?

解决方案

要实现仅匹配行首以//开头的行中的指定单词(如foo),需要结合多行模式和正则断言/捕获组来实现,以下是具体方案:

正则表达式(支持可变长度后行断言的引擎)

启用多行模式(标记m),使用正向后行断言确保目标单词位于//开头的行内:

(?<=^//.*)\bfoo\b

各部分解释

  • ^:多行模式下匹配行首
  • //:匹配行首的注释符号
  • .*:匹配//之后的任意字符(直到当前foo位置之前的内容)
  • (?<=...):正向后行断言,验证当前位置之前的内容满足"行首//开头"的条件
  • \bfoo\b:匹配独立的foo单词(避免匹配foobar这类包含foo的字符串)

兼容方案(不支持可变长度后行断言的引擎)

如果你的正则引擎不支持可变长度后行断言(比如旧版JavaScript),可以用捕获组实现:

^//.*?(\bfoo\b).*

通过提取捕获组1的内容,即可得到目标单词。

示例验证

测试文本:

//foo bar
//bar foo
Something else with the word foo

使用上述正则(带多行模式),会匹配前两行的foo,第三行的foo因不在//开头的行内,不会被匹配。

代码示例(Python)

import re

text = """//foo bar
//bar foo
Something else with the word foo"""

# 方案1:使用后行断言
matches = re.findall(r'(?<=^//.*)\bfoo\b', text, re.M)
print(matches)  # 输出: ['foo', 'foo']

# 方案2:使用捕获组
matches = re.findall(r'^//.*?(\bfoo\b)', text, re.M)
print(matches)  # 输出: ['foo', 'foo']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:30:50