Regex 正则表达式:[a]bc与abc
我不是一个正则表达式专家,但我认为我了解基本知识。我在读一篇文章,其中提到使用以下语法:Regex 正则表达式:[a]bc与abc,regex,Regex,我不是一个正则表达式专家,但我认为我了解基本知识。我在读一篇文章,其中提到使用以下语法: $ps-ewwo pid,args | grep[s]sh 确定SSHD是否正在运行 我不明白为什么第一个s放在括号里。我认为ssh和[s]sh会产生相同的结果,但我实际上得到了不同的结果 $ ps -ewwo pid,args | grep [s]sh 1258 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-sessi
$ps-ewwo pid,args | grep[s]sh
确定SSHD是否正在运行
我不明白为什么第一个s放在括号里。我认为ssh
和[s]sh
会产生相同的结果,但我实际上得到了不同的结果
$ ps -ewwo pid,args | grep [s]sh
1258 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=ubuntu
2988 /usr/sbin/sshd -D
$ ps -ewwo pid,args | grep ssh
1258 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=ubuntu
2988 /usr/sbin/sshd -D
3082 grep --color=auto ssh
那么为什么在第二个例子中会找到第三个结果呢
谢谢 当您将
ps
导入grep
时,您通常会发现正在运行的grep
进程,因为该术语存在于程序名中,并且很可能会匹配。当您将ps
导入grep
时,您经常会发现正在运行的grep
进程,因为该术语存在于程序名中,很可能会匹配。正则表达式[a]bc
和abc
完全匹配同一组字符串,但它们应用于不同的数据,因为grep
的命令行参数出现在ps
命令的输出中
使用[a]bc
会导致文本字符串“[a]bc”
出现在ps的输出中,而这与正则表达式[a]bc
不匹配
这样做是为了避免与
grep
命令本身的行匹配。正则表达式[a]bc
和abc
完全匹配同一组字符串,但它们应用于不同的数据,因为grep
的命令行参数出现在ps
命令的输出中
使用[a]bc
会导致文本字符串“[a]bc”
出现在ps的输出中,而这与正则表达式[a]bc
不匹配
这样做的目的是避免与grep
命令本身的行相匹配。括号是一个字符,但是让一个字符类包含一个字符且不指定重复字符实际上没有意义
得到不同结果的原因是ssh
匹配进程列表中的grep参数,但它[s]sh
自身不匹配。括号是a,但让一个字符类包含一个字符且不指定重复字符是没有意义的
您得到不同结果的原因是
ssh
与进程列表中的grep参数匹配,但它[s]sh
与自身不匹配。在您的第一个grep中,您将ss[h]
-与您的其余注释不匹配。@Zac谢谢,这是一个输入错误。抱歉,已修复。这是否更适合?可能是,现在我明白我的问题实际上不是regexp理解。不管怎样,谢谢你的帮助。在你的第一个grep中,你把ss[h]
-与你其余的评论不匹配。?@Zac谢谢,这是一个打字错误。抱歉,已修复。这是否更适合?可能是,现在我明白我的问题实际上不是regexp理解。不管怎样,谢谢你的帮助。你打字比我快。:-)你打字比我快。:-)