我试图将字符串与正则表达式匹配,但它不起作用。你知道吗
我想做的很简单,这是一个典型的情况,当一个用户入侵一系列的页面,或单页。我正在读字符串并检查它是否正确。你知道吗
我所期望的表达式,对于一系列的页面来说是:1-3, 5-6, 12-67
对于单个页面,我期望的表达式如下:1,5,6,9,10,12
这就是我目前所做的:
pagesOption1 = re.compile(r'\b\d\-\d{1,10}\b')
pagesOption2 = re.compile(r'\b\d\,{1,10}\b')
似乎第一种表达有效,但第二种表达无效。你知道吗
而且,是否可以将它们合并到一个正则表达式中?,在某种程度上,如果用户引入类似1-2, 7-10
或类似3,5,6,7
的内容,表达式将被识别为良好。你知道吗
越简单越好
匹配整个输入并不是简单的,正如建议的解决方案所显示的那样,至少它没有它可能/应该那么简单。很快就会变成只读,可能会被任何不懂regex的人抛弃,因为他们需要用更简单更明确的解决方案来修改它。你知道吗
最简单的
首先将整个字符串和
.split(",");
解析为单独的数据项,您仍然需要这些数据项来处理。无论如何,你必须这样做才能解析出有用的数字。你知道吗然后测试就变成了一个非常简单的测试。你知道吗
它说,字符串必须以
one or more digits
开头,后跟optionally a single
-and one or more digits
,然后字符串必须结束。你知道吗这使您的逻辑尽可能简单和可维护。您还可以准确地知道输入的哪些部分出错以及为什么出错,这样您就可以向用户报告。你知道吗
捕获组就在那里,因为您需要解析出输入以实际使用它,这样您就可以获得匹配的数字,而无需添加更多代码来再次解析它们。
这个正则表达式应该可以-
演示here
测试这个-
相关问题 更多 >
编程相关推荐