我正在尝试为包含以下内容的语言编写正则表达式:
我想(b | ((a^+)b)^* ) U (a | ( (b^+) a)* )
,但这是错误的。
有谁知道我错在哪里?
答案 0 :(得分:2)
<强>假设强>
我认为它应该是"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*
- 任意数量的
b
- 单个b
(aa)*
偶数个
修改强>
根据评论,您可能希望字符串包含以下内容:
正则表达式将是:
a*(b(aa)+)*b?