我正在尝试删除sed 中被其他字符串 (\[
和) 包围的字符串。\]
我可以轻松匹配起始字符串\[
,但之后我不想匹配任何字符,包括\
和]
但如果它们在一行中(\]
结束字符串)则不匹配。
那可能吗 ?
答案1
sed -e 's/\\\[\([^\\]\|\\[^]]\)*\\\]//g'
搜索模式的剖析:
\\\[ starting delimiter
\(
[^\\] not a backslash
\| or
\\[^]] a backslash followed by any char except a right bracket
\)* repeat as many times as possible
\\\] ending delimiter