正则表达式匹配字符串中的数字零

Regex to match the number zero in the string

有人可以帮我在单独的组中取零分吗?

import re

text = 'fafsah000012fafaa'

zeroRegex = re.compile(r'^(\w*)((0)*\d*)(\w*)$')

matches = zeroRegex.search(text)

print(matches.groups())

您可以使用

zeroRegex = re.compile(r'^([a-zA-Z]*)(0*)(\d*)([a-zA-Z]*)$')
## Or, if you still need to match underscores and all Unicode letters and digits:
zeroRegex = re.compile(r'^([^\W\d]*)(0*)(\d*)([^\W\d]*)$')

参见regex demo and a Python demo online

请注意,\w* 以贪婪的方式匹配任何零个或多个字母、数字或下划线。使其非贪婪(如 \w*?)在这里没有帮助,因为在此模式中所有模式都是 可选 ,如果跳过第一个 \w*?,则接下来的 0*\d* 将匹配字符串的最开始,最后的 \w*\w*? 将获取字母数字字符串的其余部分。

因此,获得所需内容并保持所有子模式可选的唯一方法(这样即使是空字符串也可以使用此正则表达式进行解析),您需要从该模式中“减去”数字,然后使用[A-Za-z]* 只匹配 ASCII 字母,或 [^\W\d]* 匹配任何 Unicode 字母、下划线(和一些其他连接标点符号,但这通常不是问题)。