我正在尝试为一种语言编写一个正则表达式,该语言包括:
- 包含任意数量的 a 后跟单个 b 和的字符串
- 包含任意数量的 a 后跟单个 b 后跟偶数 a 的字符串。
我想(b | ((a^+)b)^* ) U (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]*
您想将其限制为a
and 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
编辑:
根据评论,您可能需要包含以下内容的字符串:
正则表达式将是:
a*(b(aa)+)*b?