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理解。不管怎样,谢谢你的帮助。你打字比我快。:-)你打字比我快。:-)