gpt4 book ai didi

Python:允许重复正则表达式,同时只允许逗号之间有 1 个连字符

转载 作者:行者123 更新时间:2023-11-28 22:40:57 25 4
gpt4 key购买 nike

我真的被正则表达式困住了。例如,我有:

^(\d+)(?:[-,](\d+)(?:[,/](\d+))*?)*$

这让我可以重复匹配 0-9 之间的任何以逗号分隔的数字。即 4,5,6,6,7,8,8 == match 但是,它还允许在逗号之间用连字符多次分隔数字,这是我不想要的。即 4-4-4-4-4,4,4-4 == 匹配

我怎样才能改变这个模式,让它允许:4-4,5,5但不是 4-4-4-4

最佳答案

假设 / 是有效的标记分隔符:

正则表达式

^(?:(?:^|[/,])\d+(?:-\d+)?)+$
  • (?:^|[/,]) 匹配字符串的开头,或者需要标记分隔符。
  • \d+ 匹配任何正整数。
  • (?:-\d+)? 允许使用可选的连字符和整数。
  • 这一切都包含在 (?:non-capturing group) 中,以便用 + 重复它(至少一次)。

代码

import re
pattern = re.compile(r'^(?:(?:^|[/,])\d+(?:-\d+)?)+$')
text = "4,4-5,6,6,7,8,9-8,1234-1,4321"

re.search(pattern, text)

关于Python:允许重复正则表达式,同时只允许逗号之间有 1 个连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33138609/

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