所以 *
本身意味着重复前一项零次或多次。 *
的输出是空的。 **
呢?这给出了一个输出,但是匹配零次或多次什么都没有给出什么东西呢?你能解释一下吗? ?*
也一样:?
之前没有任何内容,所以这不是对的吗?匹配零次或多次什么都不给什么?
mugbear:~# grep '*' emptyspace
mugbear:~# grep '**' emptyspace
line1
line2
line4
line5
line7
mugbear:~# grep '?' emptyspace
mugbear:~# grep '?*' emptyspace
line1
line2
line4
line5
line7
最佳答案
前导的 *
通常不是魔术,因为它的上下文
您提出的问题没有完全指定答案,因此几乎可以肯定取决于特定的 RE 实现。
就此而言,甚至没有任何接近于单一标准 RE 的东西,并且这些变体并不是解释略有不同,而是模式定义截然不同。
最开始有经典的grep/sed/ed/awk。最终出现了一组相当扩展的模式,并在 Perl 和其他语言中流行起来。
一些这些实现试图注意到角色何时由于其位置而不能变魔术。
因此,普通的 *
可能会搜索实际的 *
和 **
,然后搜索 0 个或多个 *
字符。 (并且每个字符串都有 0 个或多个...)
注意:是的,有一个 Posix 标准,但影响很小,可以忽略不计。
关于regex - 正则表达式 : Something out of nothing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057153/