Python 如何使用正则表达式从字符串中取出符号

Python 如何使用正则表达式从字符串中取出符号,python,regex,Python,Regex,我试图使用正则表达式和Python 3.4从字符串中提取一些有用的符号。 例如,我需要提取任何小写字母+任何大写字母+任何数字。顺序并不重要 'adkkeEdkj$4' --> 'aE4' '4jdkg5UU' --> 'jU4' 或者,可能是符号列表,例如: 'adkkeEdkj$4' --> ['a', 'E', 4] '4jdkg5UU' --> ['j', 'U', 4] 我知道可以使用以下方法匹配它们: r'(?=.*[a-z])(?=.*[A-

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

'adkkeEdkj$4' --> 'aE4'
'4jdkg5UU'    --> 'jU4'
或者,可能是符号列表,例如:

'adkkeEdkj$4' --> ['a', 'E', 4]
'4jdkg5UU'    --> ['j', 'U', 4]
我知道可以使用以下方法匹配它们:

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

是否可以使用正则表达式获取这些值?

您可以通过使用look aheads中的捕获组获取这些值:

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))

输出:

[('a', 'E', '4'), ('j', 'U', '4')]

注意:我已经编辑了look Ahead,以包括对比度类,以获得更好的性能,
^
锚定在这里也很重要。

您可以通过使用look Ahead中的捕获组来获取这些值:

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))

输出:

[('a', 'E', '4'), ('j', 'U', '4')]

注意:我已经编辑了look aheads以包含对比度类以获得更好的性能,而锚定在这里也很重要。

是否需要任何符合此要求的任意子字符串?或者所有符合此要求的子字符串。Cory,我想要任何子字符串您想要任何符合此要求的任意子字符串吗?或者所有符合这个要求的子字符串。科里,我想要任何子字符串TNX,这正是我需要的。是的,捕获内部外观头部是一个伟大的正则表达式功能。当我们需要从字符串中获得重叠匹配时也会有所帮助。tnx,这正是我需要的是,捕获内部外观头部是一个很好的正则表达式功能。当我们需要从字符串中获得重叠匹配时也会有所帮助。