正则表达式含有“bbb”

问题描述 投票:0回答:3

我正在尝试用chars'a'和'b'创建一个正则表达式。唯一的规则是正则表达式必须在某处包含“bbb”这个词。

有一种可能:Abba aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我不知道我怎么能表达这一点。

有任何想法吗?提前致谢!

regex automata
3个回答
1
投票

基于标签“automata”,我猜你正在使用这种正式语言的正式正则表达式。在那种情况下,正则表达式是(a + b)bbb(a + b)。这个正则表达式的解剖结构如下:

  • (a + b)给出“a”或“b”
  • (a + b)*给出任何“a”和“b”的字符串
  • bbb仅给出字符串bbb
  • 整个正则表达式描述任何以任何东西开头的字符串,然后是bbb,然后以任何结尾

要证明这个正则表达式是正确的,请注意:

  • 此正则表达式仅生成包含子字符串bbb的字符串。这是由于中间部分。
  • 此正则表达式生成包含子字符串bbb的所有字符串。假设有一些字符串包含该正则表达式未生成的子字符串bbb。该字符串以bbb开头,或者不是。如果是,那么通过重复第一个(a + b)零次和第二个(a + b)n - 3次,我们的正则表达式生成字符串,其中n是字符串的长度。否则,如果它不以bbb开头,请考虑长度为n - 1的后缀作为递归情况。这样继续,直到subcase以bbb开头(最终必须)。因为这个后缀可以通过我们的正则表达式来描述,所以原始的情况也必须是因为我们可以重复第一个(a + b)额外的次数等于递归的深度。

0
投票

模式很简单

/b{3}/g

如果你需要它匹配3和只有3'b,你可以使用

/b{3}[^b]?/g

0
投票

晚上好!你可以使用它可能有效的表达式

(a+b)* (bbb)(a+b)*

使用此结果可生成三(bbb)最小字符串

通过关闭(a + b),您可以生成包含三重b的任何类型的字符串

© www.soinside.com 2019 - 2024. All rights reserved.