【发布时间】:2020-10-29 20:11:51
【问题描述】:
我在我的 bash 终端中运行了这个示例:
echo "ab" | egrep '\a\b'
输出
ab
然后我运行了这个:
echo "a" | egrep '\a\b'
输出
a
我很困惑。为什么我得到输出? 但后来我又输入了一个:
echo "a" | egrep '\ab'
并没有得到输出。
扩展正则表达式的 \a\b 和 \ab 有什么区别?
附言
Regex 没有忽略第一个字母:
echo "b" | egrep '\a\b'
输出为空 正则表达式的行为符合我的预期,但与第一种情况有什么不同?
P.P.S 我发现这个例子:
echo 'ab' | egrep '\a\b'
也不输出任何东西。在第一种情况下(echo "ab" | egrep '\a\b'),输出是 ab。引号如何影响正则表达式?
【问题讨论】:
-
在 grep (GNU grep) 3.1 中,
echo "ab" | egrep '\a\b'不返回任何结果。 -
\b很特别,\a只是写a的更复杂的方式。 -
基本上
\b就像$你的例子。 -
好的,我意识到转义字母是不安全的。但是其他角色呢?他们逃跑的时候除了自己还有其他意义吗?还是只有具有相似属性的字母?