我希望这个正则表达式只产生字符串acl
。我怎么做 ?即使我有一个否定运算符,我仍然收到 2013-
。
void testPattern()
{
Pattern pattern =
Pattern.compile("^.*-");
Matcher matcher =
pattern.matcher("2013-acl");
boolean found = false;
while (matcher.find())
{
println matcher.group();
}
}
最佳答案
您的模式“^.*-”
仅与输入匹配,直到连字符。
将其更改为“^.*-(.*)$”
,并使用matcher.group(1)<代替
.matcher.group()
/
因此,使用此修改后的模式并使用相同的输入:
^
匹配输入的开头- 第一个
.*
匹配2013
-
匹配-
- 第二个
.*
匹配acl
$
匹配输入的结尾
第二个 .*
周围的括号构成一个捕获组。捕获的模式可以通过 matcher.group(1)
获得。
关于java - 正则表达式中的否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372882/