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

如何编写正则匹配以_@_开头、__d__结尾的语句?d为1-2位数字

正则表达式匹配问题分析

需求说明

需要编写正则表达式,匹配以_@_开头、以__d__(d为1-2位数字)结尾的子串。

示例与期望

输入文本:

getting a regex _@_enter text  text . tex, text here__2___2_ te xt text .

期望提取结果:

_@_enter text  text . tex, text here__2__

你尝试的正则

^(_@_)?.*
\_\_\d{1,2}\_$/gm

存在的问题

  1. 锚点逻辑错误:^和$是行首/行尾锚定,你的目标是行内的一段子串而非整行内容,这会导致正则只能匹配整行完全符合开头结尾的文本,无法定位到行中间的目标内容。
  2. 开头匹配不符合要求:(_@_)?中的?表示_@_是可选的,但需求是必须以_@_开头,这个?会让正则匹配不含_@_的内容,违背需求。
  3. 贪婪匹配导致结果偏差:.*是贪婪匹配,会尽可能匹配最长内容,容易跳过目标结尾,匹配到更靠后的符合数字下划线规则的部分。
  4. 结尾格式匹配错误:需求的结尾是__d__(两个下划线+数字+两个下划线),但你写的是\_\_\d{1,2}\_,少了一个下划线;同时$锚定行尾,和目标结尾的实际位置不符。
  5. 无效语法与多余模式:正则中的换行是无效的,需合并为单行;/gm中的m(多行模式)不需要,因为你不需要匹配多行的行首行尾。

修正后的正则

_@_.*?__\d{1,2}__
  • _@_:强制匹配开头标识
  • .*?:非贪婪匹配任意字符,确保匹配到第一个符合结尾格式的位置
  • __\d{1,2}__:精确匹配结尾格式(两个下划线+1-2位数字+两个下划线)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:30:51