L= { w is {1,2,3}*
| w starts with 3, ends with 2 and there is a substring of only 1 with length
even equal or >2}.
因此,一些测试的结果必须是:
3323112: accepted
311211112: non accepted
31112: non accepted
32: non accepted
2113: non accepted
313212: non accepted
我的回答是:3*(11)*2*
但是它没有通过一些测试......有人可以帮助我吗?
第二项练习是:
L= { w is {1,2}*
| in w after every 1 there is one or more 2, but if the 1 is the last
character it could be the last (no 2 after it)}
测试字符串:
1: accepted
222: accepted
221212122: accepted
1222121: accepted
111221: not accepted
11: not accepted
我的解决方案是(12*)*
但它没有通过一些测试......请帮帮我。
答案 0 :(得分:1)
我不打算为你做功课,但我会指出你要做的事情有几个问题:
.*
代替*
来允许任意数量的任何字符。.*(11)*.*
也匹配奇数为1的字符串,因为.
也可以是1。紧接在1s之前和之后的数字必须是“not-a-1”(即2或3)。希望这对你有帮助。
答案 1 :(得分:1)
^3
2$
1{2,}
^3[1-3]*1{2,}[1-3]*2$
([1-3]*
件允许任何数字1到3,因为那里没有要求)(?<!1)(1{2})+(?!1)
(lookbehind和lookahead以确保1被隔离)^3[1-3]*(?<!1)(1{2})+(?!1)[1-3]*2$
(?<!1)12+
(确保在此之前没有1)1?$
^((?<!1)12+)*1?$
希望这会有所帮助。祝你好运,他们很难学习,但一旦掌握了它就很容易。
答案 2 :(得分:1)
因为这看起来像是作业,所以我不会直截了当地回答。您将要查看正则表达式中的修饰符。 *
表示重复0次或更多次。对于字符类,还有+
,?
和方括号。还要注意,一些可用的东西可能依赖于你正在使用的正则表达式解析器(通常称为“味道”)。但是一些基础知识通常都是一样的。