匹配偶数个字符的正则表达式

3

免责声明(解决后):这是我的大学作业,因此答案可能很简单。提示已经显示,但我的答案在这里被隐藏。可以在此处找到其他答案,但我对直接发布的答案不承担任何剽窃责任。


您好,我在以下练习中遇到了麻烦

查找严格表示语言的正则表达式:

b^(m+1), such that m>=0, m mod 2 = 1

这个技术涉及语言分解成单词:

{bb,bbbb,bbbbbb,bbbbbbbb,...}

我尝试了以下方法:
b(bbb)?(bb)*

但这也可以接受

{bb,bbb,bbbb,bbbbb,...}

是否有一种方法可以编写,使得一个表达式取决于另一个表达式?例如:如果同时选择了(bbb),则不能选择(bb)*,然后重复该决策,但允许反之亦然。

任何帮助将不胜感激。谢谢。

2个回答

1

0

我猜想,这可能更接近一些。

^(?:bb){1,}$

你的设置可能看起来像这样,

bb
bbbb
bbbbbb

不确定。如果您的设置是正确的,那么表达式很可能可以修改。


此外,b 可能不在集合中,因为 m=0 不符合第二个要求。
如果您想要探索/简化/修改表达式,可以在regex101.com的右上方面板中找到解释。如果您愿意,您还可以在此链接中查看它如何匹配一些示例输入。

不幸的是,这个问题要求我提供一个表达式,使它仅接受该集合。这意味着它不应该接受bb bbb bbbbb,因为我的集合是{b,bbbb,bbbbbb...}。 - ferics
哦,是的!b不会在集合中。谢谢!我会进行编辑并再次查看。 - ferics
我刚刚尝试了你的表达式。它几乎正确,唯一的缺陷是你的表达式仍然接受初始值为“b”的情况?我们该如何解决这个问题? - ferics
或者 这个表达式 哈哈哈,我们为什么要把事情搞得这么复杂呢... 不过还是谢谢! - ferics
1
@ChanbothSom 但是你的标题似乎有些不对,“匹配奇数个字符的正则表达式”。 - Code Maniac
@Code Maniac,谢谢你指出来。那是在我和Emma意识到我在原始帖子中的设置有误之前的事情了。 - ferics

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接