Является ли регулярное выражение [a-Z] допустимым и если да, то совпадает ли оно с [a-zA-Z]?

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

13
задан Peter Mortensen 4 January 2011 в 00:27
поделиться

6 ответов

Нет, a (97) выше, чем Z (90). [aZ] недопустимый класс символов. Однако [Az] тоже не будет эквивалентным, но по другой причине. Он будет охватывать все буквы, но также включать символы между прописными и строчными буквами: [\] ^ _ `.

34
ответ дан 1 December 2019 в 17:47
поделиться

Я не уверен в реализациях других языков, но в PHP вы можете сделать

"/[a-z]/i"

, и он будет нечувствителен к регистру . Возможно, что-то подобное есть и для других языков.

4
ответ дан 1 December 2019 в 17:47
поделиться

Вы не указываете, на каком языке, но в целом [aZ] не будет допустимым диапазоном, так как в ASCII буквы нижнего регистра идут после заглавных. [Az] может быть допустимым диапазоном (с указанием всех букв в верхнем и нижнем регистре, а также знаков препинания между Z и a ) ), но это может быть не так, в зависимости от вашей конкретной реализации. Флаг i можно добавить к регулярному выражению, чтобы сделать его нечувствительным к регистру; проверьте свою конкретную реализацию, чтобы узнать, как указать этот флаг.

3
ответ дан 1 December 2019 в 17:47
поделиться

] Вы всегда можете попробовать:

 print "ok" if "monkey" =~ /[a-Z]/;

Perl говорит

Invalid [] range "a-Z" in regex; marked by <-- HERE in m/[a-Z <-- HERE ]/ at a-z.pl line 4.
2
ответ дан 1 December 2019 в 17:47
поделиться

Нет, это недопустимо, вероятно, потому что значения ASCII не являются последовательными от z до A.

1
ответ дан 1 December 2019 в 17:47
поделиться

Если он действителен, он не будет делать то, что вы ожидаете.

Код символа Z ниже, чем код символа a, поэтому, если коды поменяны местами, чтобы обозначить диапазон [Za] , он будет таким же, как [Z \ [\\\] ^ _ ʻa] , то есть будет включать символы Z и a и символы между.

Если вы используете [Az] для получения всех символов верхнего и нижнего регистра, это все равно не то же самое, что [A- Za-z] , это то же самое, что [AZ \ [\\\] ^ _ ʻaz] .

2
ответ дан 1 December 2019 в 17:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: