Regex Bash正则表达式匹配后@

Regex Bash正则表达式匹配后@,regex,Regex,我想在之后匹配一个字符串@ 例如: stringZ=-p2234root@tor 结果将是tor 我能做的最好的事情是: echo expr匹配$stringZ'\.\@ 哪个输出: -P2234根@ 我如何才能否定这一点?您可以使用sed: 或者如果stringZ变量中有: newstring=$(echo stringZ | sed -r 's/.*@//') echo $newstring 您可以使用sed: 或者如果stringZ变量中有: newstring=$(echo strin

我想在之后匹配一个字符串@ 例如: stringZ=-p2234root@tor

结果将是tor

我能做的最好的事情是: echo expr匹配$stringZ'\.\@ 哪个输出: -P2234根@ 我如何才能否定这一点?

您可以使用sed:

或者如果stringZ变量中有:

newstring=$(echo stringZ | sed -r 's/.*@//')
echo $newstring
您可以使用sed:

或者如果stringZ变量中有:

newstring=$(echo stringZ | sed -r 's/.*@//')
echo $newstring
您可以使用bash内置的字符串修改功能:

echo "${stringZ##*@}"
甚至不需要正则表达式,因为实际上,您尝试执行的操作并不需要正则表达式…

您可以使用bash内置的字符串修改功能:

echo "${stringZ##*@}"

甚至不需要正则表达式,因为实际上您要做的并不需要正则表达式…

使用捕获组。*\@.*并打印索引1。使用捕获组。*\@.*并打印索引1。sed很好,但为什么要捕获稍后打印的内容?sed-r的s/*@/'就足够了,因为它删除了@之前的所有内容,所以剩下的字符串就是您想要的。@fedorqui绝对正确。睡眠不足是罪魁祸首。sed很好,但是为什么要抓到你以后打印的东西呢?sed-r的s/*@/'就足够了,因为它删除了@之前的所有内容,所以剩下的字符串就是您想要的。@fedorqui绝对正确。睡眠不足是罪魁祸首。