此问题已在此处有答案:
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}”无法理解此正则表达式。
2条答案
按热度按时间dphi5xsq1#
如果我还记得的话,使用
.match(String regex)
表示字符串是 exact match。这意味着在内部[12].{2}
变成^[12].{2}$
。在这种情况下,
[12].{2}
将匹配1或2,后跟2个字符。121
匹配此限制,但是11a2
不匹配,因为在这种情况下,字符串太长了1个字符。将模式更改为如下所示:
^[12].{3}$
应该匹配,并将确认上述参数。wfsdck302#
正则表达式的第一部分(
[12]
)是一个字符集。它告诉我们只匹配几个字符中的一个。在本例中,
[12]
匹配字符串中的第一个1
。然后,在正则表达式中有一个
.
。它告诉匹配除换行符之外的任何字符。在您的示例中,
[12].
匹配:12
(2
与.
匹配)最后,在正则表达式(
{2}
)中有一个量词。它告诉匹配伪装令牌的X(在您的情况下为2)。在您的示例中,
[12].{2}
匹配:121
(第二个1
由于量词而匹配。基本上就像一个双.
)对于字符串
11a2
,match
方法返回false,因为没有完全匹配。正则表达式只匹配11a
,而不匹配2