正则表达式匹配字符串中的数字零
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 字母、下划线(和一些其他连接标点符号,但这通常不是问题)。
有人可以帮我在单独的组中取零分吗?
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 字母、下划线(和一些其他连接标点符号,但这通常不是问题)。