regex - 正则表达式 : Something out of nothing?

标签 regex linux

所以 * 本身意味着重复前一项零次或多次。 * 的输出是空的。 ** 呢?这给出了一个输出,但是匹配零次或多次什么都没有给出什么东西呢?你能解释一下吗? ?* 也一样:? 之前没有任何内容,所以这不是对的吗?匹配零次或多次什么都不给什么?

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/

相关文章:

python - 替换 XML 文件中的单词

linux - 如何以 root 身份远程运行命令?

mysql - 远程访问 MysqlDB

python - 仅检测正则表达式中的数字

regex - Linux SED RegEx 替换,但保留通配符

Java 正则表达式 : Match any words word and must contain a certain work but except one word

sql - PostgreSQL-拆分行

php - 错误 : When i try to install php 7 version on centos 7 but Package comes Php 5 version

linux - 使用 Bash 创建用户

linux - 在 Linux 内核中存储信息的最佳方式是什么?