如何创建介于101和1000之间的正则表达式(regex)?
如何更改此正则表达式如何创建介于101和1000之间的正则表达式(regex)?,regex,expression,Regex,Expression,如何更改此正则表达式 ([1-9][0-9][0-9]|[1-9][0-9]|[1-9]).* 仅匹配101和1000之间的值。以上仅表示1000位 谢谢 我们应该做到这一点 10[1-9]匹配101-109 1[1-9]\d匹配110-199 [2-9]\d\d马赫数200-999 1000匹配1000 $匹配字符串的结尾 正则表达式演示: 编辑:在regex中添加了^和$,以防止错误的中间数字匹配。这包含您想要做什么和如何做的解释,以及其他范围 您可以告诉我们: ^(10[1-9]|1
([1-9][0-9][0-9]|[1-9][0-9]|[1-9]).*
仅匹配101和1000之间的值。以上仅表示1000位
谢谢
我们应该做到这一点
匹配101-10910[1-9]
匹配110-1991[1-9]\d
马赫数200-999[2-9]\d\d
匹配10001000
匹配字符串的结尾$
编辑:在regex中添加了
^
和$
,以防止错误的中间数字匹配。这包含您想要做什么和如何做的解释,以及其他范围
您可以告诉我们:
^(10[1-9]|1[1-9]\d|[2-9]\d\d|1000)$
它是
从一端到另一端(^
和$
)
要测试的案例数量只会让我们记住,有时有比正则表达式更好的解决方案
(?!^100$)^[1-9][0-9][0-9]$|1000
这就成功了
见演示
您可以使用:
^(?!100$)((?:[1-9]\d\d)|1000)$
用Python测试它:
>>> tester='\n'.join([str(e) for e in range(2000)])
>>> tgt=range(101,1001)
>>> result=map(int, re.findall(r'^(?!100$)((?:[1-9]\d\d)|1000)$', tester, re.M))
>>> tgt==result
True
这应该在python3中实现。只需全局匹配
([0-9]+)
并解析为整数?[1-9][0-9][0-9]
这应该匹配100到1000。您的正则表达式只匹配1000个以上。不确定如何阻止100匹配。这是用于实际项目还是家庭作业?如果是在现实生活中,那么使用regex进行此操作是错误的。将字符串转换为整数并使用比较运算符。您好,谢谢,但它的匹配数大于1000,示例数据我输入了100 101 123 200 999 1000 1001 10 101 1001 1234 1999 2000 3000 4000 5000为什么有这么多Dow投票?仅仅因为可能有比正则表达式更好的解决方案?我认为它不应该匹配1000。“介于101和1000之间”。很简单,可以将其修改为不接受101或1000。感谢您输入以下数字,您将看到它仍然匹配大于1000的数字。1 99 100 101 123 200 999 888 1000 1001 1002 100000 1000000我处理的数字范围从1到1Milion与任何以0结尾的数字都不匹配,除非1000.1000被忽略。它在100到1000之间
^(?!100$)((?:[1-9]\d\d)|1000)$
>>> tester='\n'.join([str(e) for e in range(2000)])
>>> tgt=range(101,1001)
>>> result=map(int, re.findall(r'^(?!100$)((?:[1-9]\d\d)|1000)$', tester, re.M))
>>> tgt==result
True
([1-9]\d\d|1000)