繁体   English   中英

正规语言的正则表达式

[英]Regular expression for formal languages

我正在尝试为包含以下内容的语言编写正则表达式:

  • 字符串,其中包含任意数量的a,后跟单个b和
  • 包含任意数量的a,后跟单个b和偶数个a的字符串。

我以为(b | ((a^+)b)^* ) U (a | ( (b^+) a)* )但这是错误的。

有谁知道我在哪里错?

假设

我假设它应该是"strings that consist of" ,而不是"strings which contains" 区别在于,如果bbbbbaaabaabbbb"contains" (因为它包含aaabaa ),它将是一个有效的字符串。

为了使其成为"strings that contains" ,唯一的区别是添加.*? 开头和.*到结尾(或[ab]*?[ab]*如果您想将其限制为ab )。

问题分析

我相信您可以将问题简化为"strings that consist of any number of a's followed by a single b followed by an even number of a's" ,因为0是偶数。

我不知道您的正则表达式中的^U在做什么。 该语言是否特定于语法(通常^表示行/字符串的开头)?

它应该很简单:

a*b(aa)*

a* -任意数量的a
b一个b
(aa)*的偶数

编辑:

根据评论,看来您可能想要包含以下内容的字符串:

  • 任意数量的
  • 其次是以下任意数目:
    • 一个b
    • 后跟a的偶数(数字!= 0)
  • 可选地后跟ab

正则表达式为:

a*(b(aa)+)*b?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM