我正在尝试构建一个有限状态机,并且我想使用正则表达式检查我得到的序列。我需要检查序列是否来自以下形式:
例如:
"A,B,C,C,C,C,C,A"
-> 被接受。
"A,B,C,C,C,C,A"
-> 被忽略。
"A,B,C,C,C,C,C,C,A"
-> 被忽略。
我尝试了接下来的事情:A\B\D{5}\A
,ABD{5}A
还有更多,但再次没有成功。
编辑:我想知道 C 字符是否准确返回 5 次,前后都无关紧要,这意味着它也可能是这样的:
A,A,A,F,F,R,E,D,C,C,C,C,C,......
不要考虑逗号。
问题是我需要确定一个序列是否被接受,但是该序列来自下一种形式:A、B、C*10,我创建了机器类、状态类和事件类。但现在我需要知道我是否正好有 5 个 C 回报,这给我带来了很多问题。
编辑: 它不起作用,请参阅我添加的代码。
String sequence1 = "A,B,C,C,C,C,A";
String sequence2 = "A,B,C,C,C,C,C,A";
String sequence3 = "A,B,C,C,C,C,C,C,A";
Pattern mPattern = Pattern.compile("(\\w)(?:,\\1){4}");
Matcher m = mPattern.matcher(sequance1);
m.matches(); //FALSE
Matcher m = mPattern.matcher(sequance2);
m.matches(); //FALSE
Matcher m = mPattern.matcher(sequance3);
m.matches(); //FALSE
它总是返回错误的。
我怎样才能做到这一点?
谢谢。