Regex 为什么这些正则表达式不同?
我正在寻找其中有撇号的行,并尝试了一些似乎与我相同的表达方式;然而,有些成功了,有些没有。为什么我会有以下行为:Regex 为什么这些正则表达式不同?,regex,grep,Regex,Grep,我正在寻找其中有撇号的行,并尝试了一些似乎与我相同的表达方式;然而,有些成功了,有些没有。为什么我会有以下行为: egrep \' file # works as expected egrep "\'" file # seems to return all lines egrep "[\']" file # works as expected egrep '\'' file # seems to be waiting for more input 单引号和双引号在
egrep \' file # works as expected
egrep "\'" file # seems to return all lines
egrep "[\']" file # works as expected
egrep '\'' file # seems to be waiting for more input
单引号和双引号在转义方面有所不同。将
echo
放在前面,查看实际发送到egrep
的内容:
$ echo egrep \' file
egrep ' file
$ echo egrep "\'" file
egrep \' file
$ echo egrep "[\']" file
egrep [\'] file
$ echo egrep '\'' file
>
最后一种情况是提示输入更多内容,因为您仍然在单引号表达式中:它不是单引号中的转义引号(\'
)(因为这不是转义单引号的方式)。它是单引号之间的反斜杠,后面有一个开头引号
顺便提一下,要在单引号字符串中转义单引号,请使用如下结构:
$ echo 'foo'\''bar'
foo'bar
这实际上是在两个单引号字符串之间插入一个裸引号(\'
)。然后所有这些都隐式连接在一起
我不知道为什么
“\'”
匹配所有行(但似乎确实如此)。单引号和双引号在转义方面有差异。将echo
放在前面,查看实际发送到egrep
的内容:
$ echo egrep \' file
egrep ' file
$ echo egrep "\'" file
egrep \' file
$ echo egrep "[\']" file
egrep [\'] file
$ echo egrep '\'' file
>
最后一种情况是提示输入更多内容,因为您仍然在单引号表达式中:它不是单引号中的转义引号(\'
)(因为这不是转义单引号的方式)。它是单引号之间的反斜杠,后面有一个开头引号
顺便提一下,要在单引号字符串中转义单引号,请使用如下结构:
$ echo 'foo'\''bar'
foo'bar
这实际上是在两个单引号字符串之间插入一个裸引号(\'
)。然后所有这些都隐式连接在一起
我不知道为什么
“\'”
匹配所有行(但似乎确实如此)。如果您试图匹配”
请在“
中引用它,我认为这太复杂了:
如果你想匹配
,
请在“
中引用它,我认为你太复杂了:
你的措辞有点误导人:用[…]引号转义听起来像是用引号转义。很好的建议是:使用
echo
来整理发生了什么事情,如何在单引号中转义字符?您的措辞有点误导性:使用[…]引号转义听起来像是使用引号转义。好的建议是:使用echo
来整理发生了什么事情,如何在单个引号中转义字符?