2017-01-06 2 views
1

Регулярное выражение в Python, которое принимает буквы, цифры и только эти специальные символы (, .- |;! _?).Как написать регулярное выражение в Python, которое принимает алфавиты, цифры и несколько выбранных специальных символов (, .- |;! _?)?

Я попытался решить эту проблему с помощью следующих регулярных выражений, но это не сработало:

'([a-zA-Z0-9,.-|;!_?])$' 
'([a-zA-Z0-9][.-|;!_?])$' 

Может кто-то пожалуйста, помогите мне написать регулярное выражение.

ответ

5

Я думаю, что должно работать (проверено на RegExr против Foo123,.-|;!_?):

^[\w,.\-|;!_?]*$ 

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

+0

Спасибо, она мгновенно решена моя проблема. –

2

Попробуйте это (вы должны бежать - как этот \-):

^[a-zA-Z0-9,.\-|;!_?]+$ 

+ предотвратить соответствующие пустые строки, чтобы их можно использовать вместо *.

Примеры:

>>> import re 
>>> 
>>> re.match('^[a-zA-Z0-9,.\-|;!_?]+$', '12.0') 
<_sre.SRE_Match object at 0x00000000027EB850> 
>>> re.match('^[a-zA-Z0-9,.\-|;!_?]+$', '') 
>>> 
>>> re.match('^[a-zA-Z0-9,.\-|;!_?]+$', 'test!?') 
<_sre.SRE_Match object at 0x00000000027EB7E8> 
1

Вы можете использовать \w (бонус: Юникод и поддержку локали!):

матчи любой алфавитно-цифровой символ и символ подчеркивания; это эквивалентно набору [a-zA-Z0-9_]

См. Python's documentation. Кроме того, вы можете использовать сырые строки при указании вашего регулярного выражения:

m = re.match(r'[\w,.-|;!?]+', your_string) 

Обратите внимание на использовании + (повторить один или несколько раз). Вы также использовали $ для соответствия концу строки, но я не включил ее в свою. YMMV.

2

Используйте это только один символ:

'[a-zA-Z0-9,.\-|;!_?]' or '[\w,.\-|;!_?]' 

Используйте это для всех персонажей:

'[a-zA-Z0-9,.\-|;!_?]*' or '[\w,.\-|;!_?]*' 

Используйте это для равноправной проверки:

'^[a-zA-Z0-9,.\-|;!_?]*$' or '^[\w,.\-|;!_?]*$' 
+0

Ваш комментарий помог мне узнать о регулярных выражениях. –

Смежные вопросы