有一个仅由数字组成的字符串输入,即整数。如何编写一个接受除数字 1、2 和 25 之外的所有数字的正则表达式?
我想在 BeanIO(支持正则表达式)的记录标识中使用它来跳过一些具有特定值的记录。
我达到了这一点^(1|2|25)$
,但我想要与此匹配的相反。
有一个仅由数字组成的字符串输入,即整数。如何编写一个接受除数字 1、2 和 25 之外的所有数字的正则表达式?
我想在 BeanIO(支持正则表达式)的记录标识中使用它来跳过一些具有特定值的记录。
我达到了这一点^(1|2|25)$
,但我想要与此匹配的相反。
你可以使用这样的模式:
^([03-9]\d*|1\d+|2[0-46-9]\d*|25\d+)$
或者,如果您的正则表达式引擎支持它,您可以像这样使用否定的前瞻断言( (?!…)
):
^(?!1$|25?$)\d+$
但是,您最好简单地解析代码中的数字并确保它不等于禁止值之一。
(?!^1$|^2$|^25$)(^\d+$)
这应该适用于您的情况。
您不应该尝试编写这样的正则表达式,因为大多数语言不支持正则表达式的补码。
相反,你应该做的是编写一个只匹配这三件事的正则表达式: ^(1|2|25)$
- 然后在你的代码中你应该检查这个正则表达式是否匹配\d+
并且不能匹配另一个,例如:
`if($myStr =~ m/\d+/ && !($myStr =~ m/^(1|2|25)$/))`