在Java中理解正则表达式

anauzrmj  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(122)

此问题已在此处有答案

Reference - What does this regex mean?(1个答案)
3天前关闭.

public class Main
{
    public static void main(String[] args) {   
        String str = "121";
        String regEx = "[12].{2}";
        System.out.println(str.matches(regEx));
    }
}

它给出的是真,但对于“11 a2”它给出的是假。我很困惑这个“[12].{2}”表达式在做什么。
“[12].{2}”无法理解此正则表达式。

dphi5xsq

dphi5xsq1#

如果我还记得的话,使用.match(String regex)表示字符串是 exact match。这意味着在内部[12].{2}变成^[12].{2}$
在这种情况下,[12].{2}将匹配1或2,后跟2个字符。121匹配此限制,但是11a2不匹配,因为在这种情况下,字符串太长了1个字符。
将模式更改为如下所示:^[12].{3}$应该匹配,并将确认上述参数。

wfsdck30

wfsdck302#

正则表达式的第一部分([12])是一个字符集。它告诉我们只匹配几个字符中的一个。
在本例中,[12]匹配字符串中的第一个1
然后,在正则表达式中有一个.。它告诉匹配除换行符之外的任何字符。
在您的示例中,[12].匹配:122.匹配)
最后,在正则表达式({2})中有一个量词。它告诉匹配伪装令牌的X(在您的情况下为2)。
在您的示例中,[12].{2}匹配:121(第二个1由于量词而匹配。基本上就像一个双.
对于字符串11a2match方法返回false,因为没有完全匹配。正则表达式只匹配11a,而不匹配2

相关问题