他们是如何得到没有子串'ab'的所有字符串的答案?

时间:2014-02-16 22:33:54

标签: regex

我是正则表达式的新手,我试图学习它,我遇到了这个问题

正则表达式 - Let the alphabet = {a,b}.为:

编写正则表达式
All strings that do not have the substring 'ab' 

他们是如何得到答案b*a*的?我想到了B和a之间的Kleene星,你可以有ab,订单也很重要吗?

我在这里找到了它:http://courses.washington.edu/css448/zander/Notes/reg343ans.txt

1 个答案:

答案 0 :(得分:3)

在正则表达式中,顺序很重要。

b*a*

表示0或更多'b'后跟0或更多'a'。 (这假设正则表达式搜索锚定到字符串的开头和结尾 - 在大多数正则表达式语法中,这实际上将写为:^ b * a * $)

所以,它会匹配

  • 任何数量的'a's
  • 任意数量的'b's
  • 任意数量的'b后跟任意数量的'a's

这是一个奇怪的问题,但他们是正确的。如果你只有a和b作为可能的字符,那么b后跟b的任何序列都有子串'ab'