相关疑难解决方法(0)

为什么在正则表达式中选择插入符号 (^) 和美元符号 ($) 作为行的开头/结尾?

澄清一下,这不是关于插入符号 (^) 或美元符号 ($) 在正则表达式中的作用的问题。

在具有 QWERTY 布局的现代键盘中,^出现在后面$(即^出现在数字 6$上方和4 上方),所以当我使用它们时,我总是有一段时间的手眼不协调,比如^foobar$.

所以我很好奇,为什么从历史上看,为什么选择插入符号和美元符号来匹配行的开头/结尾,因为如果将它们颠倒过来会更直观。

也许他们当时有不同的键盘布局?显然,在 vi 中选择 ESC 来改变模式的原因是它对 Bill Joy 的键盘有意义:为什么 vim 使用 hjkl 键作为箭头键

regular-expression historical-unix

20
推荐指数
1
解决办法
963
查看次数

Bash 通配历史

Bash“globbing”和正则表达式不相同是否有历史原因?例如,我相信在 Bash 中[1-2]*匹配任何以 1 或 2 开头的任何内容,然后是其他任何内容,而正则表达式[1-2]*只会匹配 1 和 2 的序列。我的 Bash 脚本和 REGEX foo 都很弱,我经常遇到与这些差异相关的问题,这让我很好奇它们为什么不同。

shell history regular-expression wildcards

12
推荐指数
2
解决办法
1365
查看次数

Thompson 和 Ritchie 在编写 Unix 时使用了什么文本编辑器?

我认为可能是qed,但我找不到任何来源来证实或否认这一点。

此外,ed它存在于 Unix 的整个时期,并sam于 1980 年代初编写。是否知道从 Unix 时代到 Plan9 的贝尔实验室大多数人使用的是什么?

我在想时间线是这样的:

qed-> ed-> sam->acme

editors history ed

11
推荐指数
1
解决办法
1682
查看次数

正则表达式 `/pattern/g` 和 ed `:g/pattern/`:哪个先出现,为什么是 `g`?

g选项(例如s/pattern/replacement/g对于许多工具使用正则表达式风格的模式匹配和):g的命令edexvi,并vim有相当类似的使用和意义:匹配给定的正则表达式“全球”,即第一比赛结束后不停止。

我对此有两个问题:

  • 哪个先出现,是:g命令还是g模式匹配标志,在哪个工具中?看起来大多数在模式匹配中sed使用g标志的工具(例如)实际上只是直接或间接模拟ed。例如,在后 Perl 时代,大多数使用正则表达式的工具都允许g标记,因为 Perl允许,而 Perl 会出现,因为ed-> sed-> Perl。因此,如果答案是“它们是在原始ed工具中同时引入的,并且除此之外没有历史先例”,我也不会感到惊讶。
  • 为什么将其称为global选项(或命令)?它真的没有什么“全球性”的;该:g命令与任何其他ed命令一样采用一系列行,并且该g标志不会以任何方式扩展搜索范围(它只允许多次点击)。我想我想不出更好的名字,但所选的名字对我来说似乎很奇怪,所以我想知道是否有一些我没有看到的原因。

sed history regular-expression ed

8
推荐指数
2
解决办法
1813
查看次数