簡體   English   中英

正則表達式-特殊字符的字符類

[英]Regular Expression - character class for special characters

我需要在Python中編寫一個正則表達式,以捕獲可能包含任何特殊字符(如!@#$%^)的某些文本。 是否有類似於[\\ w]或[\\ d]的字符類可以捕獲任何特殊字符?

我可以在正則表達式中寫下所有特殊字符,但最終看起來不可讀。 任何幫助表示贊賞。

特殊字母字符

Python 3

如果您使用的是Python3,則可能無需執行任何操作。 \\w已經包含許多“特殊字符”:

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

Python 2.7

在Python2.7中,默認情況下,只有i會被匹配\\w

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

您可以使用re.UNICODE

# 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
#   ì
#   í

任何特殊字符

指定unicode范圍可能會簡化您的正則表達式。 例如,此正則表達式匹配任何unicode箭頭

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

對於Python2,您需要指定unicode字符串和regex:

>>> import re
>>> arrows = re.compile(ur'[\u2190-\u21FF]')
>>> re.findall(arrows, u"a⇸b⇙c↺d↣e↝f")
[u'\u21f8', u'\u21d9', u'\u21ba', u'\u21a3', u'\u219d']

您可以嘗試使用與任何非單詞或非數字字符匹配的否定版本(\\ W,\\ D)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM