gpt4 book ai didi

python - 如何为数字后缀正则表达式?

转载 作者:行者123 更新时间:2023-11-28 22:13:01 53 4
gpt4 key购买 nike

我有以下正则表达式(示例在 Python 中):

pattern = re.compile(r'^(([a-zA-Z0-9]*[a-zA-Z]+)([\d]+)|([\d]+))$')

这会正确解析任何具有数字后缀和可选的字母数字前缀的字符串:

a123
a2a123
123

所有人都会正确地将 123 视为后缀。它会正确地拒绝错误的输入:

abc
123abc
()123 # Or other non-alphanumerics

尽管如此,正则表达式本身相当笨拙,结果几个捕获组通常是空的,这意味着我必须通过额外的步骤将它们过滤掉。我很好奇是否有比“一个数字或一个以字符结尾的字母数字开头的数字”更好的方式来考虑这个正则表达式?

最佳答案

你可以使用

^[A-Za-z0-9]*?([0-9]+)$

参见 regex demo

详情

  • ^ - 字符串的开始
  • [A-Za-z0-9]*? - 任何字母/数字,零次或多次,尽可能少(由于这种非贪婪匹配,下一个模式,([0-9]+),会匹配字符串末尾的所有数字有)
  • ([0-9]+) - 第 1 组:一个或多个数字
  • $ - 字符串结尾。

在 Python 中:

m = re.search(r'^[A-Za-z0-9]*?([0-9]+)$') # Or, see below
# m = re.match(r'[A-Za-z0-9]*?([0-9]+)$') # re.match only searches at the start of the string
# m = re.fullmatch(r'[A-Za-z0-9]*?([0-9]+)') # Only in Python 3.x
if m:
print(m.group(1))

关于python - 如何为数字后缀正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54351792/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com