我正在尝试为一种语言编写一个正则表达式,该语言包括:
- 包含任意数量的 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]*您想将其限制为aand 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?