[英]Regular expression for formal languages
我正在尝试为包含以下内容的语言编写正则表达式:
我以为(b | ((a^+)b)^* ) U (a | ( (b^+) a)* )
但这是错误的。
有谁知道我在哪里错?
假设
我假设它应该是"strings that consist of"
,而不是"strings which contains"
。 区别在于,如果bbbbbaaabaabbbb
是"contains"
(因为它包含aaabaa
),它将是一个有效的字符串。
为了使其成为"strings that contains"
,唯一的区别是添加.*?
开头和.*
到结尾(或[ab]*?
和[ab]*
如果您想将其限制为a
和b
)。
问题分析
我相信您可以将问题简化为"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)*
的偶数
编辑:
根据评论,看来您可能想要包含以下内容的字符串:
正则表达式为:
a*(b(aa)+)*b?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.