正则表达式,如何避免特定值?

时间:2012-02-16 08:53:43

标签: regex

我有一些长度为3的整数,我想要包括0和1的所有值,我有这个正则表达式[0,1] {3}

但我喜欢避免价值000,怎么样?

PL / SQL中需要RegEx Oracle实现POSIX正则表达式,这是现代Perl样式正则表达式的一个相当有限的子集,这意味着不支持负向前瞻(?!)

2 个答案:

答案 0 :(得分:4)

这个怎么样?

(?!000)[01]{3}

http://regexr.com?301c8

  

匹配:
111
010
001

     

不匹配:
000
123
0
11

我不确定你是否想要任何 3个字符的整数,或者只有那些包含0和1(000除外)的整数,在这种情况下: (?!000)\d{3}可能就是你要找的东西。


不使用前瞻。

(仅限整数):(00[1-9]|0[1-9]0|0[1-9]{2}|[1-9]00|[1-9]{3})

(任何0或1):(001|010|011|100|1{3})

答案 1 :(得分:2)

有人会发布一个带有负面外观或类似黑魔法的解决方案,但我会在这里发布我在其他地方发布的内容:正则表达式非常强大,但诀窍是知道何时不应该使用它们 - 测试应该在正则表达式之外完成特定值。应该在正则表达式内部对值的范围或模式进行测试。