我正在阅读《灵活性软件设计 (SDF)》。练习 2.10 要求实现BRE 和 ERE 的翻译器。本书使用像 ERE 中grep
那样测试翻译的字符串(a.c)
来捕获类似abc
或 的内容adc
。
我使用 Arch Linux。
根据POSIX 规范9.3.3 BRE 特殊字符,\+
不受 BRE 支持。
但是man grep
“基本与扩展正则表达式”允许\+
使用默认选项 BRE。
BRE 对应于 ed 或historical grep 类型
不过ed
好像也支持\+
。
(已编辑:此段内容有误,因为启用选项 b 时,该网站根本不符合 BRE。(ab)
而不是\(ab\)
将匹配“ab”。)https://www.regexplanet.com/advanced/postgresql/index.html可以支持单纯的 BRE,但它有点慢,并且不能轻易地合并到 Scheme 代码中(我正在学习 SICP 和 SDF,所以我没有检查 Scheme 中的 Http 实现。上面的书使用 shell 来运行grep
)。我使用表达式a\+c
和输入abc
在启用选项 b 的情况下进行测试。它显示“regex_matches()”为“(none)”。
那么是否有一个正则表达式工具完全遵循BRE?