有谁知道 sed
中特殊字符的完整列表是什么?是 ?
请不要给出类似的答案,它与 grep
的特殊字符列表相同,因为这只是将我的问题转换为:是否有人知道 grep
中特殊字符的完整列表是什么?是?
最佳答案
这取决于。严格来说,符合标准的 sed 必须只使用基本正则表达式,其中 the standard状态:
BRE 特殊字符及其具有特殊含义的上下文如下:.[\
句点、左方括号和反斜杠应该是特殊的,除非在括号表达式中使用(参见 RE 括号表达式)。包含前面没有反斜杠且不是括号表达式的一部分的 '[' 的表达式会产生未定义的结果。*
星号应该是特殊的,除非在括号表达式中使用,作为整个 BRE 的第一个字符(在首字母 '^' 之后,如果有),或作为子表达式的第一个字符(在首字母 '^' 之后,如果任何);请参阅匹配多个字符的 BRE^
当用作 anchor 时,抑扬符应该是特殊的(参见 BRE 表达式 anchor 定)
或作为括号表达式的第一个字符(请参阅 RE 括号表达式)$
美元符号在用作 anchor 时应该是特殊的。
所以完整的列表是.[\*^$
,但上下文很重要。此外,许多 sed 提供了使用扩展正则表达式 (ERE) 的选项,这将扩展列表并更改特殊字符的上下文。例如,在没有 ERE 的情况下,使用 \(
形成分组。和 \)
,但带有 ERE (
和 )
本身是特殊的,必须转义才能按字面意思匹配。
关于regex - sed 中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446406/