You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何匹配并移除包含#加两位数字的方括号整体内容

如何匹配并移除包含#加两位数字的方括号整体内容

嘿,我来帮你搞定这个正则匹配的问题!你的需求很明确——要把所有包含#+两位数字的方括号(包括括号里的全部内容)删掉,同时保留那些不含这种格式的括号,对吧?

解决方案:用正则精准匹配并替换

直接用下面这个正则表达式,把匹配到的内容替换成空字符串就可以了:

\[[^\]]*#\d{2}[^\]]*\]

正则各部分拆解(帮你理解为什么这么写)

  • \[:匹配左方括号(因为[在正则里是特殊字符,必须用反斜杠转义才能匹配字面意义的左括号)
  • [^\]]*:匹配任意数量的不是右方括号的字符——因为你说括号里没有嵌套括号,所以用这个可以安全匹配括号内的内容,直到遇到我们要找的#XX模式,或者到右括号为止
  • #\d{2}:这就是我们要抓的核心特征——#后面紧跟恰好两位数字(\d代表数字,{2}表示匹配两次,也就是刚好两位)
  • [^\]]*:继续匹配#XX之后、直到右括号前的所有非右括号字符
  • \]:匹配右方括号(同样需要转义)

用你的例子测试一下

原字符串:

12345 one two [#13 west] words [2025/02/25] #15 [#88]turtles [smth #25 else].

用上面的正则替换后,就会得到你想要的结果:

12345 one two  words [2025/02/25] #15 turtles .

额外说明

  • 这个正则只会命中包含#+两位数字的括号,像[2025/02/25]这种没有符合格式内容的括号会被完整保留,完全符合你的需求
  • 因为你明确说括号内没有嵌套的括号,所以[^\]]*不会出现“跨括号匹配”的问题,用起来很安全
  • 如果之后需要匹配#后面是两位及以上数字的情况,只需要把\d{2}改成\d{2,}就行,灵活调整很方便

备注:内容来源于stack exchange,提问作者lolo

火山引擎 最新活动