text = '''
I am a numeric string 75698 \t
I am a alphanumeric string A14-B32-C7D
I am a alphanumeric string A14-B32-C74578
I am an alphabetic number: three
'''
import re
regx = re.compile('\s(?=.*\d)([\da-zA-Z-]+)\s*$',re.MULTILINE)
print regx.findall(text)
# result ['75698', 'A14-B32-C7D', 'A14-B32-C74578']
注意
\s*
在$
前面的存在,以便捕捉从行尾用空格分隔的字母数字部分。在置换它并使用
\D
类而不是\S
:说明:
\D = [^\d]
换句话说,这不是一个数字。在您可以通过以下方式更明确(示例中的性能更好):
^{pr2}$如果你只有大写字母,你知道该怎么做。(类越小,正则表达式越好)
为此,不需要前瞻,这只是:
下面是一个测试用例:
http://regexr.com?34s7v
相关问题 更多 >
编程相关推荐