首页 > 试题广场 >

正则表达式 a+(bab)?(caac)* ,下列选项中

[单选题]

正则表达式 /a+(bab)?(caac)*/ ,下列选项中是该正则表达式的子集是?

  • /(bab)(caca)/
  • /a(bab){2}(caac)*/
  • /a{2}/
  • /a+(bab){0,1}(ca)+(ca)/
  • /a(^bab)+(caac){1,}/
  • /a+(babc){2,}(acc){1,}/
正则表达式 /a+(bab)?(caac)*/ ,下列选项中是该正则表达式的子集是?
第一步:理解题目。
题目中的 a+ 代表 字符“a” 出现1次或者若干次,(bab)? 代表 字符 “bab” 出现一次或者0次,(caac)* 表示重复了“0或者若干次”的字符“caac”,即 字符“caac”出现0次或者若干次 。
若改题目为/李+太?白*/,可匹配:李、李太、李白、李太白、李李、李李太、李李白白、李李太白白等。
第二步:理解选项,选出子集。
A /(bab)(caca)/ :匹配含有 “babcaca” 的字符串,不是题目中的 “babcaac”, 就好比是在找 “太星” 而不是"太白",而且没有a,所以该正则匹配的结果不可能出现在题目匹配的结果中,错误。
B /a(bab){2}(caac)*/ :其中(bab){2} 表示 字符串“bab”必须出现2次,与题干正则显然不同,错误。
C /a{2}/ :其中(a){2} 表示 字符“a”必须出现2次,就好比 “李李” ,属于题目匹配结果的子集,正确。
D /a+(bab){0,1}(ca)+(ca)/ :前半部分正确,后半部分(ca)+(ca)明显错误。
E /a(^bab)+(caac){1,}/:正则本身有误,(^bab)匹配以"bab"开头的字符串,但前面还有a,也就是匹配以a开头的字符串,两者矛盾。
F /a+(babc){2,}(acc){1,}/:分组和区间值都不正确。

编辑于 2018-01-30 11:30:02 回复(3)
C
A选项错在没有a;
B选项错在2,因为元字符"?"表示零次或者一次;
D选项错在最后两个分组,正确顺序应该是caac
E选项错在最后的区间,元字符"*"表示零次或者多次,
F选项错在分组和区间两处.
发表于 2017-05-23 14:20:12 回复(2)
? 出现0/1次
+ 出现1/无限次
* 出现0/无数次
{min, max}
发表于 2017-08-23 17:07:33 回复(1)
纠正一下上一位兄弟的答案,E项错在+(表示匹配1次以上),作为子集其涵盖范围不应该大于题目中的?(表示匹配0或1次)。

发表于 2017-08-13 11:45:57 回复(1)
?0次 一次 +一次 多次 *0次 多次 {min,max}
发表于 2019-03-14 19:30:58 回复(0)
A和C吧,正则表达式regex1是否是regex的子集应,主要应该判断:若regex1能匹配,这regex一定能匹配。不知道理解的对不对
发表于 2017-05-03 15:37:09 回复(3)
答案 C
a出现一次或多次   bab 出现0次或1次  caac 出现0次或多次,整个字符串没有^ $ ,所以可出现在中间。
A /(bab)(caca)/  表示(bab)和(caca) 必出现一次, 该正则可以不匹配最开始的a, 所以不是子集
B /a(bab){2}(caac)*/  bab 要重复2次,则不是子集
C /a{2}/ a连续出现2次,能匹配/a{2}/ 必定能匹配/a+(bab)?(caac)*/,所以是子集
D /a+(bab){0,1}(ca)+(ca)/  该正则(ca)+(ca) 如果出现多次,不能被(caac)*匹配,所以不是子集
E /a(^bab)+(caac){1,}/   ^可以用在开头,也可以用在[^bab]表示不匹配bab,这个写法必然匹配不到
F /a+(babc){2,}{acc}{1,}/  babc{2,} 重复2次就和/a+(bab)?(caac)*/ 不同了
发表于 2021-01-18 21:15:11 回复(0)
题目中的 a+ 代表 字符“a” 出现1次或者若干次,(bab)? 代表 字符 “bab” 出现一次或者0次,(caac)* 表示重复了“0或者若干次”的字符“caac”,即 字符“caac”出现0次或者若干次 。
发表于 2020-06-09 13:17:39 回复(0)
A:“a+”的位置代表只能以a开头
B:{2}表示出现两次,而?代表出现1或0次
C:正确答案.a+代表出现1次以上,而{2}代表出现2次
D:(caac)括号代表只能整体出现
E:^(bab)代表要以bab开头,而a+在前则要以a开头,所以矛盾
F:分组和区间都不正确
发表于 2020-02-19 15:03:06 回复(0)
注意 ? 和 * 都可以为 0 次。解题的思路是:每个选项选择一个特殊值,给定的正则表达式是否无法匹配(从 * ? + 的含义出发)

A 模式 (caca),给定的表达式无法匹配
B 由于 (bab)? 最多匹配一次,(bab){2} 重复两次,范围较大
C a{2} 可以被 a+ 覆盖。
D 最后的 (ca) 无法匹配
E (bab)?最多匹配一次,(^bab)+ 可以重复多次,范围较大
F (babc){2,} 无法匹配
发表于 2019-07-17 17:38:34 回复(0)
正则表达式
* 出现0次或多次
+ 出现至少一次
?出现0/1次
发表于 2019-03-08 23:44:47 回复(0)
这个题没有答案,C选项要求a出现两次,而题干给的正则表达式a出现一次即可。
发表于 2017-11-14 21:44:28 回复(1)
阿里的题?
发表于 2017-07-23 17:12:45 回复(3)
c
发表于 2017-05-12 11:57:23 回复(1)