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

Regex 正则表达式,如何避免特定值?,regex,Regex,我有许多长度为3的整数,我想要所有的值,包括0和1,我有一个正则表达式[0,1]{3} 但我喜欢避开000这个值,怎么办 PL/SQL中需要正则表达式Oracle实现POSIX正则表达式,这是现代Perl风格正则表达式的一个相当有限的子集,这意味着不支持负前瞻(?!)有人会发布带有负前瞻的解决方案,或类似的黑魔法,但我将在这里发布我在其他地方发布的内容:正则表达式功能强大得惊人,但诀窍是知道何时不应该使用它们——测试特定值应该在正则表达式之外进行。测试值的范围或模式应该在正则表达式内部完成。有人

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

但我喜欢避开000这个值,怎么办


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

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

有人会发布一个带有负面环视的解决方案,或类似的黑魔法,但我会在这里发布我在其他地方发布的内容:正则表达式功能惊人,但是诀窍是知道什么时候不应该使用它们——测试特定值应该在正则表达式之外进行。测试值的范围或模式应该在正则表达式中完成。

这如何

(?!000)[01]{3}

匹配:
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})

这个怎么样

(?!000)[01]{3}

匹配:
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表示“黑魔法”,如果您说不使用正则表达式测试数字范围(您在正则表达式的有效使用中包含了什么!),但排除一个特殊值不是问题。-1表示“黑魔法”,如果您说不要使用正则表达式测试数字范围(您在正则表达式的有效使用中包含了什么?),但排除一个特殊值不是问题。所有值的长度都是3,PL/SQL Oracle实现POSIX正则表达式中不需要0、00或1RegEx等值,这是现代Perl风格正则表达式的一个相当有限的子集,这意味着不支持负前瞻(?!),您有另一个想法吗?所有值的长度都是3,PL/SQL Oracle实现POSIX正则表达式时不需要0、00或1RegEx之类的值,这是现代Perl风格正则表达式的一个相当有限的子集,这意味着不支持负前瞻(?!),您有另一个想法吗?