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

求Python正则表达式:匹配除三个连续双引号外的所有内容

解决Python中匹配不含三个连续双引号行的正则问题

我明白你遇到的困扰了——之前的负向预查只盯着行首是否是三个双引号,没法排除行内任意位置包含"""的整行,要么会误匹配部分内容,要么逻辑根本不对。

要实现「只匹配完全不包含三个连续双引号的行」,你需要调整断言的覆盖范围,确保整个行里都不存在"""。这里有个精准的正则方案:

^(?!.*""").*$

正则逻辑拆解:

  • ^:匹配每一行的开头(必须配合re.MULTILINE标志才会生效,否则只会匹配整个文本的开头)
  • (?!.*"""):负向预查,断言从行首开始,往后所有位置都不会出现三个连续双引号(.*负责覆盖行内所有可能的位置)
  • .*:匹配整行的所有内容(直到行尾)
  • $:匹配每一行的结尾(同样依赖re.MULTILINE标志)

Python代码示例:

import re

# 你的测试文本
test_text = """Lorem Ipsum
""" sdsdfgsdf """
bar
another line
""" test """
last line"""

# 执行匹配,务必加上re.MULTILINE标志
valid_lines = re.findall(r'^(?!.*""").*$', test_text, re.MULTILINE)

print(valid_lines)
# 输出结果:['Lorem Ipsum', 'bar', 'another line', 'last line']

为什么之前的正则失效?

你之前用的(?!""").*只检查了**当前位置(行首)**后面不是三个双引号,但如果"""出现在行中间,这个正则还是会匹配整个行(包括"""部分),没法排除整行。而^(?!.*""").*$通过.*把断言范围扩展到了整行,确保只要行内任何位置有三个连续双引号,就直接排除该行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:27:18