给定DFA的正则表达式

时间:2016-08-09 03:33:28

标签: regex

我为我的问题构建了以下DFA: enter image description here

我试过跟随正则表达式

(T+X?T+)+

  where
    T = [a-z0-9]
    X = [-.]

但是没有用。

2 个答案:

答案 0 :(得分:2)

假设您正在尝试匹配完整字符串。

^([a-z0-9]([a-z0-9]|([.-][a-z0-9]))*)$

example

答案 1 :(得分:2)

使用您的符号,让我们看看DFA的工作原理。

首先接受来自T的符号并进入状态0。这也是最终状态,这就是我们在T之后所有内容应该用?(0或1次)或*(0次或多次)量化的原因。

在州0,它接受​​来自T的符号,并保持状态0或来自X的符号,后跟T的符号回到州0。子表达式为T|XT,可以发生零次或多次。

完整regexT(T|XT)*。使用通常的表示法,您需要的正则表达式是:

[0-9a-z]([0-9a-z]|[-.][0-9a-z])*