正则表达式很难阅读.它们难以阅读的部分原因是它们使用非常小的字符列表(ASCII)进行编码.
为什么不使用Unicode中更广泛的字符来创建正则表达式的新表示法?
该反斜线灾难的事实结果反斜杠过载:这意味着,在一次"反斜杠"和"下一个字母是不是本身".
但这有点坚果,不是吗?反斜杠应该只是反斜杠,而"下一个字母本身不是"应该是不太可能出现在文本中的东西.
对此的明显反应将是"但你选择的任何内容都可能出现在文本中!" 是的,那是真的.但是,想要匹配反斜杠的概率(鉴于我们发现自己的历史)在天文数字上高于Unicode中的其他一些模糊符号.
或者括号:当我们可以使用其他角色时,为什么我们必须写[\ [\]] - 我不知道,也许是东亚人或者其他人:
?[]?
Run Code Online (Sandbox Code Playgroud)
叫我疯了但是
>>> re.compile('?[]?')
Run Code Online (Sandbox Code Playgroud)
看起来比我更可读:
>>> re.compile('[\[\]]')
Run Code Online (Sandbox Code Playgroud)
换行之类甚至还有特定的字符:
?
Run Code Online (Sandbox Code Playgroud)
我不确定那个人的可读性如何,但是你的想法是正确的吗?也许它应该是
?
Run Code Online (Sandbox Code Playgroud)
要么
?
Run Code Online (Sandbox Code Playgroud)
我并不是在暗示任何这些特殊的角色选择是"正确的".我很惊讶,据我所知,似乎没有任何关于这个话题的讨论.
为什么人们愿意忍受尝试用小字母表写正则表达式的难以忍受的后果?
UPDATE
哇,我对这个问题引起的嘲笑感到惊讶.有什么大不了的?
由于下面我的杂乱评论与几条评论有关,我只想写在这里:
尽管如此,"我们没有钥匙"的说法对我来说并没有多大意义.我们在这里讨论了多少"特殊字符"?让我们说绝对最大值为100.(而且这很疯狂,实际上它可能更像是20).
输入法不是我所说的 - 毕竟,我们不会对那些想在除拉丁字母之外的书写系统中使用计算机的人说"对不起,这些键不在键盘上"?当然不是.
它只是不认为我们依靠硬件来确定哪些字符集,我们撰写文字的情况下.那些日子已经一去不复返了.现在,每种编程语言都值得拥有或多或少地支持Unicode,或者正在努力.它迟早会普遍存在.
如果这里的态度是大多数科技行业的代表,我想我们都将享受到2050年代的逃避.
真棒.