正则表达式 - 特殊字符的字符类

时间:2017-03-22 13:06:12

标签: python regex

我需要在Python中编写一个正则表达式来捕获一些可能包含任何特殊字符的文本(例如!@#$%^)。是否有类似[\ w]或[\ d]的字符类可以捕获任何特殊字符?

我可以记下我的正则表达式中的所有特殊字符,但最终看起来不可读。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

特殊字母字符

Python 3

如果您使用的是Python3,则可能无需执行任何操作。 <input type="text" ng-model='user.name' ng-init='user.name = emp.name' required /> 已包含许多“特殊字符”:

\w

Python 2.7

在Python2.7中,默认>>> import re >>> re.findall('\w', 'üäößéÅßêèiìí') ['ü', 'ä', 'ö', 'ß', 'é', 'Å', 'ß', 'ê', 'è', 'i', 'ì', 'í'] 只匹配i

\w

您可以使用>>> import re >>> re.findall('\w', 'üäößéÅßêèiìí') ['i']

re.UNICODE

任何特殊字符

指定unicode ranges可能会简化您的正则表达式。例如,此正则表达式匹配任何unicode arrow

# encoding: utf-8
import re
any_char = re.compile('\w', re.UNICODE)
re.findall(any_char, u'üäößéÅßêèiìí')
# [u'\xfc', u'\xe4', u'\xf6', u'\xdf', u'\xe9', u'\xc5', u'\xdf', u'\xea', u'\xe8', u'i', u'\xec', u'\xed']
for x in re.findall(any_char, u'üäößéÅßêèiìí'):
    print x
#   ü
#   ä
#   ö
#   ß
#   é
#   Å
#   ß
#   ê
#   è
#   i
#   ì
#   í

对于Python2,您需要指定unicode字符串和正则表达式:

>>> import re
>>> arrows = re.compile(r'[\u2190-\u21FF]')
>>> re.findall(arrows, "a⇸b⇙c↺d↣e↝f")
['⇸', '⇙', '↺', '↣', '↝']

答案 1 :(得分:0)

您可以尝试使用与任何非单词或非数字字符匹配的否定版本(\ W,\ D)。