public class Test {
public static void main(String[] args){
Pattern a = Pattern.compile("(?=\\.)|(?<=\\.)");
Matcher b = a.matcher(".");
while (b.find()) System.out.print("+");
}
}
我一直在阅读Regular-Expressions.info上的环视部分并尝试弄清楚它是如何工作的,而且我坚持这件事。当我运行上面的代码时,结果是++,我不明白,因为“。”唯一能够匹配模式的标记,显然没有“。”之后或之前的任何内容。那怎么能两次匹配?
答案 0 :(得分:1)
当正则表达式引擎通过输入前进时,它会将和位置前后的字符视为输入中的不同位置。
您的输入有3个位置:
位置1匹配(?=\\.)
排名3与(?<=\\.)
匹配。