为什么必须在正则表达式引擎中转义某些元字符,而不是其他元字符?例如:
/foo[1-9]*
按预期工作,但正则表达式
foo[1-9]+
必须表示为
/foo[1-9]\+
在维姆中。有人知道吗?
This is because vim (actually vi) created their own regex flavor long before perl did. Even POSIX BRE and ERE came after vimwikipedia. They are still maintaining their own flavor so it's quite different.
为了使答案更加足智多谋,这里引用了ed's wiki.
该编辑器最初是用 PDP-11/20 汇编程序编写的1971作者:肯·汤普森。ed 的许多功能都来自 qed来自母校加州大学伯克利分校3Thompson 对 qed 非常熟悉,并在 CTSS 和 Multics 系统上重新实现了它。他的 qed 版本是第一个实现正则表达式的版本. 尽管正则表达式是 ed 的一部分,但它们的实现远不如 qed 中的通用。
ed 的各个方面继续影响 ex, 这反过来又催生了 vi。非交互式 Unix 命令 grep 的灵感来自 qed 和后来的 ed 的常见特殊用途,其中命令g/re/p 表示全局搜索正则表达式 re 并打印包含它的行。 Unix 流编辑器 sed 实现了 qed 的许多脚本功能,而 Unix 上的 ed 不支持这些功能。反过来,sed 影响了编程语言 AWK 的设计——它启发了 Perl 的某些方面。
这两段话的信息量很大!我希望我能大胆地做这一切。一些亮点,
- 肯·汤普森写道
ed
1971年。ed
实际上是重新实现qed
.
- Ken 在他的版本中添加了正则表达式
qed
这实际上是ed
.
- Inspired by
ed
, in 1976 William Joy (known as Bill Joy) wrote ex
wikipedia
- Bill Joy in 1976 wrote
vi
as the visual mode for a line editor called ex
wikipedia
-
grep
受到特殊用途的启发qed
然后ed
.
-
sed
已实现许多 qed 脚本功能,而 Unix 上的 ed 不支持这些功能
-
sed
影响了设计awk
.
所以 vi 正则表达式在ed
它写于 1971 年。它早于任何其他正则表达式风格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)