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

如何设置正则表达式模式,排除指定符号及特定换行格式?

正则表达式排除规则实现方案

需求概述

需要修改变量some_text的正则表达式,使其:

  • 可匹配大小写字母、数字及大部分符号(如:、$、#、&等)的子串
  • 绝对禁止匹配两类内容:
    1. 分号(;)
    2. .后跟任意空白/|字符再跟换行符\n的格式(例如. \n、.|\n这类组合)
  • 需满足给定测试用例的输出规则:匹配到目标模式时输出0,未匹配时输出1

测试用例说明

输入文本预期输出标记
"Recien el 2021-10-12 despues de 3 dias 2021-10-12"1NOT PASS
"Recien el 2021-10-12 hsah555sahsdhj. Ya despues de 3 dias hjsdfhjdsfhjdsf 2021-10-12"1NOT PASS
"Recien el 2021-10-12 hsah555sahsdhj; despues de 3 dias hjsdfhjdsfhjdsf 2021-10-12"1NOT PASS
"Recien el 2021-10-12 hsah555sahsdhj despues de 3 dias hjsdfhjdsfhjdsf.\\n 2021-10-12"1NOT PASS
"Recien el 2021-10-12 hsah555sahsdhj; mmm... creo que ya despues de 3 dias hjsdfhjdsfhjdsf.\\n 2021-10-12"0PASS
"Recien el 2021-10-12 hsah555sahsdhj. \\\\n\\\\n\\\\n mmm... creo que ya despues de 3 dias hjsdfhjdsfhjdsf.\\n 2021-10-12"0PASS

解决方案

可以通过单个正则模式实现所有排除规则,修改后的some_text如下:

some_text = r"(?:(?!;|\.(?:[\s|]+\\n)).)*"

正则逻辑拆解

  • (?:...):非捕获组,用于包裹整体匹配逻辑,避免额外捕获分组
  • (?!;|\.(?:[\s|]+\\n)):负向前瞻断言,确保当前位置后不会出现两类禁用内容:
    • ;:直接匹配分号
    • \.(?:[\s|]+\\n):匹配.后跟任意数量的空白/|字符,再衔接换行符\n的组合
  • .:匹配任意单个字符(除原生换行符,原测试用例中的\\n为转义后字符,正则会正常识别)
  • *:允许匹配0到多个符合条件的字符

测试验证

将修改后的some_text替换原代码变量后运行:

  • 前4个NOT PASS用例:因日期与目标短语之间存在禁用模式(直接含分号,或存在. \n类格式),check_00和check_01均无法匹配,输出1
  • 最后2个PASS用例:禁用模式出现在目标短语的非关联位置,日期与目标短语之间的内容符合some_text规则,check_00可成功匹配,输出0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:45:23