eya*_*ler 5 python regex string python-3.x
给定一个正则表达式字符类/集,如何获得所有匹配字符的列表(在python 3中).例如:
[\dA-C]
Run Code Online (Sandbox Code Playgroud)
应该给
['0','1','2','3','4','5','6','7','8','9','A','B','C']
Run Code Online (Sandbox Code Playgroud)
我认为你要找的是string.printable返回Python中所有可打印字符的内容.例如:
>>> import string
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
Run Code Online (Sandbox Code Playgroud)
现在要查看正则表达式满足的内容,您可以:
>>> 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']
Run Code Online (Sandbox Code Playgroud)
string.printable是数字,字母,标点符号和空格的组合.还要检查字符串常量以获取字符串模块可用的常量的完整列表.
如果您需要所有unicode字符的列表,您可以:
import sys
unicode_list = [chr(i) for i in range(sys.maxunicode)]
Run Code Online (Sandbox Code Playgroud)
注意:这将是一个巨大的列表,并且控制台可能会暂时停留以将结果赋值sys.maxunicode为:
>>> sys.maxunicode
1114111
Run Code Online (Sandbox Code Playgroud)
如果您正在处理某些特定的unicode格式,请参阅Unicode Character Ranges以限制您感兴趣的范围.
import 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']
Run Code Online (Sandbox Code Playgroud)
这是你想要的?
如果您没有x并且只想匹配 ascii 字符,您可以使用:
import re
import string
x = string.ascii_uppercase + string.digits
pattern = r'[\dA-C]'
print(re.findall(pattern,x))
Run Code Online (Sandbox Code Playgroud)
如果您想获取模式的输入,您只需执行以下操作:
pattern = input() #with either one from above
Run Code Online (Sandbox Code Playgroud)