匹配方括号之间的字符,但前提是括号内的文本遵循模式

问题描述 投票:0回答:1

我想匹配方括号内的文本 - 但前提是它包含主题标签+数字+数字

[#18]
[hello #25 bye]

不是

[25]
(没有主题标签)

我最终想删除这些匹配字符串(包括括号和括号内的所有文本)。

例如

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

我希望将其更改为:

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

(过滤掉)括号内不会有任何括号, 仅(主题标签、A-z、0-9 和空格)。我让它适用于括号和主题标签+数字+数字,但不适用于可选单词。

python regex python-re
1个回答
0
投票

您可以将

\[[^]]*(#\d{2})[^]]*\]
替换为空字符串:

看这里

import re

print(re.sub(r"(?m)\[[^]]*(#\d{2})[^]]*\]", '',
      "12345 one two [#13 west] words [2025/02/25] #15 [#88]turtles [smth #25 else] "))

结果

12345 one two  words [2025/02/25] #15 turtles 
© www.soinside.com 2019 - 2024. All rights reserved.