Регулярное выражение для соответствия буквенно-цифровой строке - PullRequest
0 голосов
/ 29 октября 2009

Если строка «x» содержит какую-либо букву или цифру, выведите эту строку. Как это сделать с помощью регулярных выражений? Код ниже неправильный

if re.search('^[A-Z]?[a-z]?[0-9]?', i):
        print i

Ответы [ 5 ]

4 голосов
/ 29 октября 2009

re - Операции с регулярными выражениями

Этот вопрос на самом деле довольно сложный.К сожалению, \ w включает _ и [az] решения, предполагающие использование 26-буквенного алфавита.С приведенным ниже решением , пожалуйста, прочитайте pydoc, где говорится о LOCALE и UNICODE .

"[^_\\W]"

Обратите внимание, что, поскольку вы только проверяете существование, использовать квантификаторы не нужно -на самом деле, использование квантификаторов, которые могут совпадать с 0 раз, возвращает ложные срабатывания.

2 голосов
/ 29 октября 2009

Я предлагаю вам проверить RegexBuddy. Это может хорошо объяснить регулярные выражения. RegexBuddy

RegexBuddy

RegexBuddy

2 голосов
/ 29 октября 2009

Вы хотите

if re.search('[A-Za-z0-9]+', i):
    print i
1 голос
/ 29 октября 2009

[A-Z]?[a-z]?[0-9]? соответствует необязательной заглавной букве, за которой следует необязательная строчная буква, за которой следует необязательная цифра. Таким образом, он также соответствует пустой строке. То, что вы ищете, это: [a-zA-Z0-9], который будет соответствовать одной цифре, строчные или прописные буквы.

И если вам нужно проверить наличие букв (и цифр) за пределами диапазона ASCII, используйте его, если ваш вариант регулярного выражения поддерживает это: [\p{L}\p{N}] Где \p{L} соответствует любой букве, а \p{N} - любому числу.

0 голосов
/ 29 октября 2009

не нужно регулярное выражение.

>>> a="abc123"
>>> if True in map(str.isdigit,list(a)):
...  print a
...
abc123
>>> if True in map(str.isalpha,list(a)):
...  print a
...
abc123
>>> a="##@%$#%#^!"
>>> if True in map(str.isdigit,list(a)):
...  print a
...
>>> if True in map(str.isalpha,list(a)):
...  print a
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...