带有grep comamnd的正则表达式字符类

时间:2017-03-23 15:40:15

标签: regex grep

过去几天我正在学习正则表达。我曾经用字符类[]来表示只选择小写字母的字母范围。

例如:文件包含如下文字:

$ cat file
.a
.b
.c .d

使用grep命令我尝试使用以下命令匹配(使用点开头)小写字母字符

$ grep '^\.[a-z]' file

这只会匹配字符              。一个              .B              。C 我的问题在这?为什么grep命令在同一行 .c

中与 .d 不匹配

我也尝试使用此命令匹配.d:

$ grep '^\.[a-z][a-z]` file 

但是这个不起作用你能帮我一个人吗?这两个字符类之间有什么区别

[a-z] vs [a-z][a-z]

1 个答案:

答案 0 :(得分:2)

如果您想匹配所有这些内容,请删除^,然后执行:

grep '\.[a-z]' file

^表示它必须位于一行的开头。所以你试图匹配一个文字点,然后是a和z范围内的一个字符。哪一个必须在一行的开头。

[a-z][a-z][a-z]之间的差异因此[a-z]匹配a-z范围内的单个字符。做[a-z][a-z]意味着你要做两次。因此,尝试匹配a-z范围内的2个连续字符。

<强> Here's a live example of the modified version

我强烈建议您使用regex101.com(上面的示例使用),如果您正在尝试学习正则表达式。因为它给你输入的正则表达式提供了很好的解释。