正则表达式严格检查字符串中的数字

2024-06-16 14:47:35 发布

您现在位置:Python中文网/ 问答频道 /正文

字符串示例:

  1. 我是一个数字字符串75698
  2. 我是一个字母数字字符串A14-B32-C7D

到目前为止,我的regex工作:(\S+)$

我想添加一种方法(可能是向前看)来检查上面的正则表达式生成的结果是否包含一个或多个数字(0-9)?在

这不起作用:(\S+(?=\S*\d\S*))$

我该怎么做?在


Tags: 方法字符串示例字母数字regexa14b32
3条回答
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)\S+)$

说明:\D = [^\d]换句话说,这不是一个数字。在

您可以通过以下方式更明确(示例中的性能更好):

^{pr2}$

如果你只有大写字母,你知道该怎么做。(类越小,正则表达式越好)

为此,不需要前瞻,这只是:

(\S*\d+\S*)

下面是一个测试用例:

http://regexr.com?34s7v

相关问题 更多 >