gpt4 book ai didi

java - 将 a^xb^x 与正则表达式匹配

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:30 32 4
gpt4 key购买 nike

澄清一下,我想匹配:

ab
aabb
aaabbb
...

这在 Perl 中有效:

if ($exp =~ /^(a(?1)?b)$/)

要理解这一点,请看一下字符串,就好像它是从外向内生长的,而不是从左向右生长的:

ab
a(ab)b
aa(ab)bb

(?1) 是对外括号组的引用。对于最后一种情况(从外向内),我们需要 ? 之后,什么都没有留下, ? 表示前面表达式的 0 或 1(因此它基本上充当我们的基本情况)。

我发布了一个类似的问题,询问 Java 中等效的 (?1) 是什么?今天我发现 \\1 指的是第一个捕获组。所以,我认为这会起作用:

String pattern = "^(a(?:\\1)?b)$";

但事实并非如此。有谁知道为什么?

注意:我知道还有其他更好的方法可以做到这一点。这完全是一个教育问题。正如我想知道为什么这种特殊方式不起作用,以及是否有办法解决它。

最佳答案

\\1 是反向引用,指的是组的,而不是作为递归 (?1) 的模式> 在 Perl 中执行。不幸的是,Java 正则表达式不支持递归,但可以使用环视和反向引用来表达模式。

关于java - 将 a^xb^x 与正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560390/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com