1

我认为 [xy] 匹配从 x 的 ascii 代码到 y 的 ascii 代码的所有字符。因此,[Az] 应该是 65 到 122 之间的任何字符。但是 bash 中的 grep 表示“无效范围”,并且 [aZ] 对所有字母都是正确的,在 ascii 代码中的范围从 97 到 90。

在这种情况下,grep 的行为究竟如何?通常, [xy] 与正则表达式中的 ascii 代码无关?

4

1 回答 1

2

regex(5) 没有说明任何关于实现的内容。[a-Z]也可以用其他方式解释(参见 joe 的评论) => 如果有人按照您想要的方式(122-65+1)= 58 != 26*2实现,您将包括其他字符。[a-Z]

无论如何,底线是 grep 不允许它, regex(5) 不强制它。

所以只需使用[a-zA-Z].

于 2012-04-13T19:11:08.740 回答