0

我正在尝试使用 sed 从文档中删除所有用方括号括起来的文本实例,所以我的代码是:

sed -r 's|\[[^\]]*\]||g' file

但是,这似乎并没有选择方括号括起来的所有文本实例。特别是,它似乎失败了:

[/a]
[/b]
[span style "blah" blah]

等等,但它适用于包含明文的方括号。据我所知,正则表达式应该寻找包含任何不是] 的字符的方括号,那么到底出了什么问题?

4

1 回答 1

1

我尝试了这个正则表达式,它没有删除括号中的任何文本。

当我删除第二个'\'时,正则表达式是

 sed -r 's|\[[^]]*\]||g'

它在所有情况下都能完美运行。

我在 Mac 和 Linux 上都试过了。Android 运行 Linux,因此它可能也可以在那里工作。


解释一下:扫描集在涉及转义时是特殊的。如果 ']' 字符是扫描集中的第一个字符,则无需转义它。如果它不是扫描集中的第一个,你就无法逃脱它。

于 2013-05-26T15:46:29.910 回答