Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建介于101和1000之间的正则表达式(regex)?_Regex_Expression - Fatal编程技术网

如何创建介于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位

谢谢

我们应该做到这一点

  • 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]\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)