给定一个正则表达式字符类/集合,在Python 3中如何获取所有可匹配的字符列表。例如:
[\dA-C]
应该给予
['0','1','2','3','4','5','6','7','8','9','A','B','C']
给定一个正则表达式字符类/集合,在Python 3中如何获取所有可匹配的字符列表。例如:
[\dA-C]
应该给予
['0','1','2','3','4','5','6','7','8','9','A','B','C']
string.printable
,它可以返回Python中所有可打印字符。例如:>>> import string
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
现在,要检查是否满足您的正则表达式的内容,您可以执行以下操作:
>>> import re
>>> x = string.printable
>>> pattern = r'[\dA-C]'
>>> print(re.findall(pattern, x))
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C']
string.printable
是由数字、字母、标点符号和空格组成的。还可以查看String Constants以获取string模块提供的所有常量的完整列表。
如果您需要所有unicode
字符的列表,可以执行以下操作:
import sys
unicode_list = [chr(i) for i in range(sys.maxunicode)]
注意:这将是一个巨大的列表,控制台可能会卡住一段时间才能给出sys.maxunicode
的值作为结果。
>>> sys.maxunicode
1114111
如果您正在处理一些特定的Unicode格式,请参考Unicode字符范围以限制您感兴趣的范围。
[é]
上失败。 - alexisimport re
x = '123456789ABCDE'
pattern = r'[\dA-C]'
print(re.findall(pattern,x))
#prints ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C']
这是您要找的内容吗?
如果您没有 x
,并且只想匹配ASCII字符,可以使用:
import re
import string
x = string.ascii_uppercase + string.digits
pattern = r'[\dA-C]'
print(re.findall(pattern,x))
如果您想为模式输入数据,只需执行以下操作:
pattern = input() #with either one from above
import re
myregexp = r"[\dA-C]"
interest = [ (0x0000, 0x024F),
(0x0590, 0x06FF) ]
pattern = re.compile(myregexp)
matched = []
for low, high in interest:
matched.extend(chr(p) for p in range(low, high+1) if pattern.match(chr(p)))
>>> print("".join(matched))
0123456789ABC٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹
[\dA-C]
和样本输出,例如['0','1','2','3','4','5','6','7','8','9','A','B','C']
?这个问题太宽泛了,但并不是完全不清楚。 - jonrsharpe[\w]
,答案将是大多数 Unicode 字符集。如果您可以将兴趣限制在特定的代码点范围内,那么您就可以有所收获。 - alexis\d
也不仅仅是[0-9]
,请看我的答案。 - alexis