gpt4 book ai didi

python - 我应该如何为一位/两位数字序列编写 python 正则表达式?

转载 作者:行者123 更新时间:2023-11-28 20:43:07 24 4
gpt4 key购买 nike

我正在尝试为 “由可选的多个空格或可选的单个逗号分隔的一个或两个数字序列”创建一个 python 正则表达式。

例如:

"   1"  Should tests good
" 1 2 3 3 4 5 7 17" Should test good
" 1, 2,3,11,74" Should test good
"1,11,14, 15" Should test good

"111, 101" Should not test good
"1 2 3 a" Should not test good
"1, 25, 5.0 " Should not test good
"1,, 7, 80" Should not test good
"1,11,14," Should not test good

逗号只能出现在数字(或空格)之间。这就是为什么最后一个例子应该测试不好。

我试过 this :

^\s*\d{1,2}(\s*\,?\d{1,2}\s*\,?)*\s*$

但没有得到很好的结果,例如“11111”会测试好。我应该如何编写我的正则表达式?

最佳答案

这个正则表达式应该工作 ^(\s*\d{1,2}\s*$)|^((\s*\d{1,2}\s*[\,\s]\s*\d{1,2}\s*))+([\,\s]\s*\d{1,2}\b\s*)*$。请注意,要捕获 1 到 2 次,您可以使用 {1,2},其中逗号前的数字是下限,而逗号后的数字是上限。它的工作方式是我们捕获 ^(\s*\d{1,2}\s*$)^((\s*\d{1,2}\s*[\,\s]\s*\d{1,2}\s*))+([\,\s]\s*\d{1,2}\b\s*)*$。对于第一个选项,我们首先寻找字符串 ^ 的开头。接下来,我们寻找一个可选的无限量空间 \s* 后跟一个或两个数字 (\d{1,2}),然后是一个可选的无限量的空格,然后是 String $ 的结尾。对于第二个选项,我们允许可选的无限空间 \s* 后跟一位或两位数字 \d{1,2},然后是可选的无限空间 \s*。接下来我们允许使用逗号或空格 [\,\s]。然后我们再次允许可选的无限空间 \s*,后跟一个或两个数字 \d{1,2},然后是可选的无限空间 \s* 。这必须至少出现一次 + 才能被视为匹配(只有空格或以逗号开头的任何内容都不会匹配)。它后面可以跟一个逗号或空格[\,\s],然后是无限量的空格\s*,再跟一个一位或两位数字\d{1,2}。随后是边界 \b 和可选的无限量空间 s*。该组可以无限次出现,因此 * 后跟 $,String 的末尾。

关于python - 我应该如何为一位/两位数字序列编写 python 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247950/

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