Regex 正则表达式锚点$dons';我不能在控制台工作
作为教程的一部分,我正在尝试正则表达式中的锚标记字符串结束$和字符串开始^。不管怎样,只有字符串开始标记起作用。显然,在本教程中,这两个标记都起作用 锚令牌$(不工作) 输入文件regex16.txt 命令Regex 正则表达式锚点$dons';我不能在控制台工作,regex,bash,macos,terminal,Regex,Bash,Macos,Terminal,作为教程的一部分,我正在尝试正则表达式中的锚标记字符串结束$和字符串开始^。不管怎样,只有字符串开始标记起作用。显然,在本教程中,这两个标记都起作用 锚令牌$(不工作) 输入文件regex16.txt 命令 grep '.*bar$' regex16.txt grep '^foo.*' regex15.txt 预期结果 baz foo bar foo baz bar 结果 foo bar baz foo baz bar 命令od-bc regex16.txt 0000000 14
grep '.*bar$' regex16.txt
grep '^foo.*' regex15.txt
预期结果
baz foo bar
foo baz bar
结果
foo bar baz
foo baz bar
命令od-bc regex16.txt
0000000 146 157 157 040 142 141 162 040 142 141 172 015 012 142 141 162
f o o b a r b a z \r \n b a r
0000020 040 146 157 157 040 142 141 172 015 012 142 141 172 040 146 157
f o o b a z \r \n b a z f o
0000040 157 040 142 141 162 015 012 142 141 162 040 142 141 172 040 146
o b a r \r \n b a r b a z f
0000060 157 157 015 012 146 157 157 040 142 141 172 040 142 141 162 015
o o \r \n f o o b a z b a r \r
0000100 012 142 141 172 040 142 141 162 040 146 157 157 015 012
\n b a z b a r f o o \r \n
0000116
其他文件
现在,手动操作后,另一个文件regex19.txt如下所示
0000000 154 151 157 156 012 164 151 147 145 162 012 154 145 157 160 141
l i o n \n t i g e r \n l e o p a
0000020 162 144 012 146 157 170 012 153 141 156 147 141 162 157 157 012
r d \n f o x \n k a n g a r o o \n
0000040 142 141 164 012 155 157 165 163 145 012 143 165 143 153 157 157
b a t \n m o u s e \n c u c k o o
0000060 012 144 145 145 162 012
\n d e e r \n
但是这个命令仍然不起作用,即使示例regex16.txt在操作后也可以工作
grep'^[a-z]{4,6}$'regex19.txt
0000000 146 157 157 040 142 141 162 040 142 141 172 015 012 142 141 162
f o o b a r b a z \r \n b a r
0000020 040 146 157 157 040 142 141 172 015 012 142 141 172 040 146 157
f o o b a z \r \n b a z f o
0000040 157 040 142 141 162 015 012 142 141 162 040 142 141 172 040 146
o b a r \r \n b a r b a z f
0000060 157 157 015 012 146 157 157 040 142 141 172 040 142 141 162 015
o o \r \n f o o b a z b a r \r
0000100 012 142 141 172 040 142 141 162 040 146 157 157 015 012
\n b a z b a r f o o \r \n
0000116
锚定令牌^(工作)
输入文件regex15.txt
命令
grep '.*bar$' regex16.txt
grep '^foo.*' regex15.txt
预期结果
foo bar baz
foo baz bar
结果
foo bar baz
foo baz bar
字符串开始是
^
&字符串结束是$
。在问题的第一行,你已经说明了反之亦然。您的代码在Python中运行得很好。请参阅我的答案-尽管您提供的内容也应该运行得很好。您确定您的行尾是LF吗?它们是CRLF吗?给我们看一行od-b regex16.txt
的输出。如果有回车符,您将看到文件上的octal015.rundos2unix
,然后运行它。正如@WiktorStribiżew猜测的那样,您有一些CRLF角色。