首页 > 解决方案 > 使用正则表达式删除重复括号之间的内容

问题描述

我正在尝试删除包含某些修饰符('DeleteMe')的括号之间不需要的单词,并且不要删除包含其他单词('DontDeleteMe')的括号之间的内容。我虽然很简单,但由于重复括号而被证明很困难,见下文。

[
aljdsfjfldsa      DeleteMe         aldsjflajdf
]
[
aldskjfal         DontDeleteMe     asdlkjflasdj
]
[
aljdsfjfldsa      DeleteMe         aldsjflajdf
]
[
aldskjfal         DontDeleteMe     asdlkjflasdj
]

期望的输出

[
aldskjfal         DontDeleteMe     asdlkjflasdj
]
[
aldskjfal         DontDeleteMe     asdlkjflasdj
]

我尝试了以下方法,但问题是第二行将与第三行一起删除。

(?s)\[.*?'DeleteMe'.*?\]

标签: regexregex-lookarounds

解决方案


您可以将单词边界与否定字符类结合使用 [^

\[[^][]*\bDontDeleteMe\b[^][]*\]

正则表达式演示

如果单词是DeleteMe,您可以使用单词边界匹配它并用空字符串替换。

\[[^][]*\bDeleteMe\b[^][]*\]

正则表达式演示


推荐阅读