Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试使用 sed 从文档中删除所有用方括号括起来的文本实例,所以我的代码是:
sed -r 's|\[[^\]]*\]||g' file
但是,这似乎并没有选择方括号括起来的所有文本实例。特别是,它似乎失败了:
[/a] [/b] [span style "blah" blah]
等等,但它适用于包含明文的方括号。据我所知,正则表达式应该寻找包含任何不是] 的字符的方括号,那么到底出了什么问题?
我尝试了这个正则表达式,它没有删除括号中的任何文本。
当我删除第二个'\'时,正则表达式是
sed -r 's|\[[^]]*\]||g'
它在所有情况下都能完美运行。
我在 Mac 和 Linux 上都试过了。Android 运行 Linux,因此它可能也可以在那里工作。
解释一下:扫描集在涉及转义时是特殊的。如果 ']' 字符是扫描集中的第一个字符,则无需转义它。如果它不是扫描集中的第一个,你就无法逃脱它。