当单独使用时,正则表达式的外观是如何工作的

时间:2015-08-08 02:18:31

标签: java regex regex-lookarounds

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上的环视部分并尝试弄清楚它是如何工作的,而且我坚持这件事。当我运行上面的代码时,结果是++,我不明白,因为“。”唯一能够匹配模式的标记,显然没有“。”之后或之前的任何内容。那怎么能两次匹配?

1 个答案:

答案 0 :(得分:1)

当正则表达式引擎通过输入前进时,它会将位置前后的字符视为输入中的不同位置。

您的输入有3个位置:

  1. 就在第一个角色之前
  2. 第一个字符
  3. 在第一个角色之后
  4. 位置1匹配(?=\\.) 排名3与(?<=\\.)匹配。