如何从正则表达式的字符串中取出符号

时间:2015-06-10 11:47:58

标签: python regex

我正在尝试使用正则表达式和Python 3.4从字符串中为我提取一些有用的符号。 例如,我需要提取任何小写字母+任何大写字母+任何数字。订单并不重要。

'adkkeEdkj$4' --> 'aE4'
'4jdkg5UU'    --> 'jU4'

或者,也许是一个符号列表,例如:

'adkkeEdkj$4' --> ['a', 'E', 4]
'4jdkg5UU'    --> ['j', 'U', 4]

我知道可以使用以下方式匹配它们:

r'(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])'

是否可以使用正则表达式获取它们?

1 个答案:

答案 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')]

注意我编辑了预测以包含对比度类以获得更好的性能,^锚也很重要。