2

正则表达式很难阅读。它们难以阅读的部分原因是它们使用非常小的字符列表 (ASCII) 进行编码。

为什么不使用 Unicode 中更广泛的字符创建正则表达式的新符号?

反斜杠瘟疫是由于反斜杠被重载的事实造成的:它同时意味着“一个反斜杠”和“下一个字母不是它自己”。

但这有点疯狂,不是吗?反斜杠应该只是一个反斜杠,并且“下一个字母不是它本身”应该是不太可能出现在文本中的内容。

对此的明显反应将是“但您选择的任何内容也可能出现在文本中!” 是的,这是真的。但是想要匹配反斜杠的概率(考虑到我们发现自己的历史)比 Unicode 中的其他一些晦涩的符号要高得多。

或者用括号:当我们可以使用其他字符时,为什么我们必须写 [\[\]] ——我不知道,也许是东亚字符之类的:

《[]》

叫我疯子但是

>>> re.compile('《[]》')

对我来说看起来比以下更具可读性:

>>> re.compile('[\[\]]')

甚至还有用于换行符之类的特定字符:

我不确定一个人的可读性很强,但你明白吗?也许应该是

或者

我并不是要暗示这些特定的角色选择中的任何一个都是“正确的”。据我所知,我很惊讶似乎没有关于这个话题的任何讨论。

为什么人们愿意忍受尝试用小字母编写正则表达式的痛苦后果?

更新

哇,我对这个问题引起的嘲笑感到惊讶。有什么大不了的?

由于我下面乱七八糟的评论与几条评论有关,我就写在这里:

恕我直言,“我们没有钥匙”的论点对我来说没有多大意义。我们在这里谈论多少个“特殊字符”?假设绝对最大值为 100。(这太疯狂了,实际上它可能更像是 20。)

输入法不是我要说的——毕竟,我们不会对那些想在除拉丁字母之外的书写系统中使用计算机的人说“对不起,那些键不在键盘上”?当然不是。

根本不是我们依靠硬件来确定我们用什么字符集来编写文本的情况。那些时光已逝。现在,每一种称职的编程语言都或多或少地支持Unicode,或者正在研究它。它迟早会普及。

不过,如果这里的态度代表了大多数科技行业,我想我们都会喜欢逃到 2050 年代。

惊人的。

4

5 回答 5

10

你的键盘上有那些字符的键吗?

于 2012-06-29T21:00:10.137 回答
1

因为它们更难打字。

于 2012-06-29T21:00:26.297 回答
1

如果我想使用只是一个字符而不是换行符的换行符怎么办?

“/\↳/”?

但是没有什么能阻止你为正则表达式实现某种语法糖,如果它有效,那么你是对的。

于 2012-06-29T21:24:02.670 回答
0

因为大多数人没有 Unicode 键盘。

你真的希望我们每次想要制作正则表达式时都启动charmap吗?

于 2012-06-29T21:00:46.947 回答
0

我同意每个人的说法,即这会使输入正则表达式变得更加困难。我还认为它会减慢我查找字符的速度,而使用反斜杠更简单,这在许多编程语言中常用来转义字符。

如果可读性是主要问题,则应通过正则表达式上方的注释来解决。

于 2012-06-29T21:08:36.640 回答