我想要正则表达式(自动机理论)



考虑字母表V={0,1,…,9}和语言L,它由V、 其表示大于798的所有整数(例如,2345777777属于语言L,而字符串1、42、711、798则不属于(。提供生成语言L 的所有字符串的正则表达式

进行完全经典的正则表达式(即析取、串联和kleene星(:

(799|(8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*)

如果您允许典型的regex人手不足(但保持在理论限制范围内,即常规语言(,则可以简化为:

799|[89]d{2,}|[1-9]d{3,}

您可以匹配数字799、以8或9开头的三位数字,或以0以外的任何数字开头的四位(或更多(数字(不允许0023匹配(。

最新更新