匹配任何字符,但不匹配 sed 中的字符串 ...

匹配任何字符,但不匹配 sed 中的字符串 ...

我正在尝试删除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

相关内容