Regex 行尾字符($)不';不要在方括号内工作
将Regex 行尾字符($)不';不要在方括号内工作,regex,grep,Regex,Grep,将$放在方括号内不适用于grep ~ $ echo -e "hello\nthere" > example.txt ~ $ grep "hello$" example.txt hello ~ $ grep "hello[$]" example.txt ~ $ 这是grep中的一个bug还是我做错了什么?这就是它应该做的 [$] …定义与一个字符相匹配的字符类,$ 因此,这将匹配包含hello$的行 有关要求这样做的正式规范,请参见。引用该完整定义: 方括号表达式(括在方括号内的
$
放在方括号内不适用于grep
~ $ echo -e "hello\nthere" > example.txt
~ $ grep "hello$" example.txt
hello
~ $ grep "hello[$]" example.txt
~ $
这是grep中的一个bug还是我做错了什么?这就是它应该做的
[$]
…定义与一个字符相匹配的字符类,$
因此,这将匹配包含hello$
的行
有关要求这样做的正式规范,请参见。引用该完整定义: 方括号表达式(括在方括号内的表达式,“[]”)是一个RE,它应与方括号表达式表示的非空排序元素集中包含的单个排序元素相匹配 因此,任何括号表达式都与单个元素匹配
而且,
因此——从BRE开始,
grep
默认识别的regexp格式不带参数——如果$
不在表达式的末尾,则不需要将其识别为锚点。但是,您可以在括号分组中使用$
,这有助于使用
(或),它可以实现与方括号组相同的想法
您可能对以下内容感兴趣:
~ $ cat example.txt
hello
there
helloa
hellob
helloc
~ $ grep "hello\($\|[ab]\)" example.txt
hello
helloa
hellob
如果试图匹配行尾字符或字符串的结尾,可以使用类似“ABC($|\n)”的(|)命令。有问题
[$]
是字符$
的字符类。这就是[]
的用途。