我现在真的被这两个问题困住了2天多了。我想弄明白这个问题意味着什么。我的导师也不在城里。
问题1:通过表达式(a+b)****a(a+b)****
为{a,b}生成的唯一字符串编写正则表达式。解释你的推理。
我尝试了第二个问题。你认为有没有比这更好的答案?
包含奇数个a
s或正好两个b
s (a((a|b)(a|b))****|bb)
的一组字符串的正则表达式是什么?我知道它代表a的任何奇数长度, RE是a((a|b)(a|b))****
答案 0 :(得分:1)
这是第一个问题的开始。首先考虑这个正则表达式生成的字符串:
(a+b)*a(a+b)*
a
AND b
必须在其前面至少有一个a
AND aab
或者字符串必须以a
结尾。相反的是:
a
OR b
OR a
ab
。对于第二个问题,您应该检查您是否正确理解了问题。你的解释似乎是:
包含(奇数个和任意数量的b)或(正好两个b和没有a )的字符串集的正则表达式是什么。
但另一种解释是:
包含(奇数个和任意数量的b)或(正好两个b和任意数量的)的字符串集的正则表达式是什么。
答案 1 :(得分:1)
要匹配两个a
,您会使用类似aa
的内容吗?
现在我们知道+
是1或更多的量词,*
是0或更多的量词。因此,如果我们想重复整个模式,我们可以将它放在一个组中并重复整个模式:(aa)+
。
那将匹配:
aa
aaaa
但不是:
a
(因为aa
至少需要2个项目)`aaa
(因为aa
会匹配前两个,但您会额外a
)如果我们想要将奇数变为偶数,我们可以在组外添加一个额外的a
,如下所示:a(aa)+
。但是,由于我们想要一个没有特定最小值的奇数,我们不应该使用+
,因为这将需要至少3 a
。
所以整个答案是:(bb|a(aa)*)
答案 2 :(得分:0)
听起来第一个问题是要求您为与提供的正则表达式不匹配的字符串集编写正则表达式。
例如,假设问题是要求aa+
与{a}匹配的不字符串集的正则表达式。好吧,这里有一些匹配的字符串:
哪些字符串不匹配?这是唯一的两个:
后一组的正则表达式为a?
。
关于第二个问题,我建议打一些积极和消极的测试用例。通过你的正则表达式运行这样的字符串,看看会发生什么:
答案 3 :(得分:0)
表达式(a+b)*a(a+b)*
只表示: 在字符串中是a
。此表达式无法生成的唯一字符串是:b*
答案 4 :(得分:0)
此表达式表示RE必须在表达式中包含Atleast 1'A'。
这个表达式不接受
'B' 'B' * 要么 空集