正则表达式 - 不包含连续大写字母的骆驼案例

时间:2015-05-09 17:10:45

标签: regex dfa

请考虑以下标识符说明:"标识符是字母数字,但必须以字母数字开头 一个小写字母,可能不包含连续的大写字母。"  写一个接受这些标识符的DFA。

这是我的正则表达式,我将用于转换为DFA,但我不认为它是正确的

[a-z].( ([a-z0-9] | [a-z0-9][A-Z])* | ([a-z0-9] | [A-Z][a-z0-9])* )

2 个答案:

答案 0 :(得分:2)

我认为正确的正则表达式是:

    ^[a-z][A-Z]?(([a-z0-9][A-Z]?))*$

第一个:小写(或数字) 结束后:无限小写大写?小写大写?小写大写?...

PS:如果你在正则表达式中写一个点,它将匹配任何字符。要匹配文字.,请使用[.]\.

答案 1 :(得分:1)

S -> [a-z] A
A -> [a-z0-9] A
A -> [A-Z] B
B -> [a-z0-9] A

S - 开始状态
A,B - 最终状态