正则表达式 - 不包含连续大写字母的驼峰式大小写
regex - camel case that doesnt contain consecutive uppercase letters
考虑以下标识符说明:“标识符是字母数字,但必须以
一个小写字母,不能包含连续的大写字母。”
编写接受这些标识符的 DFA。
这是我将用来转换为 DFA 的正则表达式,但我认为它不正确
[a-z].( ([a-z0-9] | [a-z0-9][A-Z])* | ([a-z0-9] | [A-Z][a-z0-9])* )
我认为正确的正则表达式是:
^[a-z][A-Z]?(([a-z0-9][A-Z]?))*$
第一个:小写(或数字)
结束后:无限小写大写?小写大写?小写大写?...
PS:如果你在正则表达式中写一个点,它将匹配任何字符。要匹配文字 .
,请使用 [.]
或 \.
.
S -> [a-z] A
A -> [a-z0-9] A
A -> [A-Z] B
B -> [a-z0-9] A
S - 起始状态
A、B - 最终状态
考虑以下标识符说明:“标识符是字母数字,但必须以 一个小写字母,不能包含连续的大写字母。” 编写接受这些标识符的 DFA。
这是我将用来转换为 DFA 的正则表达式,但我认为它不正确
[a-z].( ([a-z0-9] | [a-z0-9][A-Z])* | ([a-z0-9] | [A-Z][a-z0-9])* )
我认为正确的正则表达式是:
^[a-z][A-Z]?(([a-z0-9][A-Z]?))*$
第一个:小写(或数字) 结束后:无限小写大写?小写大写?小写大写?...
PS:如果你在正则表达式中写一个点,它将匹配任何字符。要匹配文字 .
,请使用 [.]
或 \.
.
S -> [a-z] A
A -> [a-z0-9] A
A -> [A-Z] B
B -> [a-z0-9] A
S - 起始状态
A、B - 最终状态