我正在尝试使用正则表达式和Python 3.4从字符串中为我提取一些有用的符号。 例如,我需要提取任何小写字母+任何大写字母+任何数字。订单并不重要。
'adkkeEdkj$4' --> 'aE4'
'4jdkg5UU' --> 'jU4'
或者,也许是一个符号列表,例如:
'adkkeEdkj$4' --> ['a', 'E', 4]
'4jdkg5UU' --> ['j', 'U', 4]
我知道可以使用以下方式匹配它们:
r'(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])'
是否可以使用正则表达式获取它们?
答案 0 :(得分:5)
您可以通过在您拥有的预测中使用捕获组来获取这些值:
import re
p = re.compile('^(?=[^a-z]*([a-z]))(?=[^A-Z]*([A-Z]))(?=[^0-9]*([0-9]))', re.MULTILINE)
test_str = "adkkeEdkj$4\n4jdkg5UU"
print(re.findall(p, test_str))
请参阅demo
输出:
[('a', 'E', '4'), ('j', 'U', '4')]
注意我编辑了预测以包含对比度类以获得更好的性能,^
锚也很重要。