有人知道特殊字符的完整列表sed
是什么吗?
请不要给出这样的答案,它与 的特殊字符列表相同grep
,因为这只是将我的问题转换为:有人知道特殊字符的完整列表grep
是什么吗?
这取决于。严格来说,符合标准的 sed 只能使用标准规定的基本正则表达式:
BRE 特殊字符及其具有特殊含义的上下文如下:
.[\
句点、左方括号和反斜杠应该是特殊的,除非在括号表达式中使用(请参阅 RE 括号表达式)。包含前面没有反斜杠且不属于括号表达式的“[”的表达式会产生未定义的结果。
*
星号应该是特殊的,除非在括号表达式中使用,作为整个 BRE 的第一个字符(在初始 '^' 之后,如果有的话),或作为子表达式的第一个字符(在初始 '^' 之后,如果任何); 请参阅匹配多个字符的 BRE
^
当用作锚(参见 BRE 表达式锚定)或作为括号表达式的第一个字符(参见 RE 括号表达式)时,抑扬符应该是特殊的
$
美元符号在用作锚点时应是特殊的。
所以完整的列表是.[\*^$
,但上下文很重要。此外,许多 sed 提供使用扩展正则表达式 (ERE) 的选项,这将扩展列表并更改字符特殊的上下文。例如,没有 ERE 的分组是使用\(
and组成的\)
,但有 ERE的(
and)
本身是特殊的,必须转义才能按字面意思匹配。
我认为这是字符 [\^$.|?*+() 的完整列表,sed 将以不同于普通字符的方式对其进行响应。