为什么正则表达式表示法仍然用ASCII编写?

时间:2012-06-29 20:58:21

标签: regex unicode

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

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

backslash plague导致反斜杠过载:这意味着,“反斜杠”和“下一个字母本身不是”。

但这有点坚果,不是吗?反斜杠应该只是反斜杠,而“下一个字母本身不应该”应该是不太可能出现在文本中的东西。

对此的明显反应将是“但无论你选择什么,也可能出现在文字中!”是的,那是真的。但是,想要匹配反斜杠的概率(鉴于我们发现自己的历史)在天文数字上高于Unicode中的其他一些模糊符号。

或者括号:当我们可以使用其他角色时,为什么我们必须写[\ [\]] -I dunno,也许是东亚人或者其他人:

《[]》

叫我疯了但是

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

看起来比我更可读:

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

对于像换行符这样的事情甚至有specific characters

我不确定那个人的可读性如何,但是你明白了吗?也许它应该是

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

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

更新

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

由于我下面的杂乱评论与几条评论有关,我只想写一下:

在充分尊重的情况下,“我们没有钥匙”的说法对我来说没有多大意义。我们在这里谈论了多少“特殊人物”?让我们说绝对最大值为100.(这很疯狂,实际上它可能更像是20.)

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

这只是我们依靠硬件来确定我们用文字组成的字符集的情况。那些日子已经一去不复返了。现在,每种编程语言都值得拥有或多或少地支持Unicode,或者正在努力。它迟早会普及。

如果这里的态度是大多数科技行业的代表,我想我们都将享受到2050年代的逃避。

真棒。

5 个答案:

答案 0 :(得分:11)

键盘上有这些字符的键吗?

答案 1 :(得分:2)

因为他们更难打字。

答案 2 :(得分:2)

如果我想使用仅仅是字符而不是换行符的换行符会怎样?

“/ \↳/”?

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

答案 3 :(得分:1)

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

你真的希望我们每次想要制作一个正则表达式时都会激活charmap吗?

答案 4 :(得分:1)

我同意所有人的意见,认为这会使正则表达式更难打字。我也认为这会减慢我不得不查找字符,而使用反斜杠更简单,这是许多编程语言常用来逃避字符。

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