繁体   English   中英

编译器设计中如何处理正则表达式中的“except”?

[英]How to handle “except” in Regular Expression in Compiler Design?

我正在研究编译器设计,但不知道如何处理 RE 中的除了语句。

例如:除了 (011,001,010) 之外只有 3 位二进制数的文字的 RE

我知道 3 位二进制数的 RE 将是:

  • (0|1)(0|1)(0|1)

或者

  • (0|1){3}

但是我怎么能在这里处理“除了”呢?

使用 3 次 1 或 0,可以有 8 种组合。 要匹配有效的 5 个组合,您可以列出所有 5 个或使用模式来匹配 1 后跟 1 和 0 的所有组合或匹配 000。

^(?:1[01][01]|000)$

正则表达式演示

如果你有更长的字符串,你也可以使用负前瞻,例如

^(?!01[01]|001)[01]{3}$

正则表达式演示

请注意,您可以使用[01]而不是使用交替(0|1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM