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

时间:2018-11-05 18:07:37

标签: regex automata-theory

请考虑字母V = {0,1,…,9}和语言L,该语言由以下所有字符串组成 V,代表大于798的所有整数(例如,字符串799、890, 2345,777777属于语言L,而字符串1,42,711,798不属于)。提供 生成所有语言L的所有字符串的正则表达式

1 个答案:

答案 0 :(得分:-1)

使用完全经典的正则表达式(例如,析取,并置和小星):

(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)*)

如果您允许使用典型的正则表达式速记(但仍在理论范围内,即常规语言),则可以简化为:

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

您可以匹配数字799,以8或9开头的三位数或以0之外的任何数字开头的四(或更多)位数(以禁止0023匹配)。< / p>

相关问题