我试图理解为什么以" |"结尾的正则表达式为何(或简单的" |"本身)将在最后一个字符匹配之后找到一个带有启动索引0的匹配子字符串,并结束"结束"(根据Matcher的Javadoc),"0。
以下代码证明了这一点:
public static void main(String[] args) {
String regExp = "|";
String toMatch = "A";
Matcher m = Pattern.compile(regExp).matcher(toMatch);
System.out.println("ReqExp: " + regExp +
" found " + toMatch + "(" + m.find() + ") " +
" start: " + m.start() +
" end: " + m.end());
}
输出是:
ReqExp: | found A(true) start: 0 end: 0
我对它甚至是有效的正则表达式的事实感到困惑。并且对开始和结尾都是0的事实感到困惑。
希望有人可以向我解释。
正则表达式中的管道表示"或"。因此,您的正则表达式基本上是"(空字符串)或(空字符串)"。它成功地在字符串开头找到一个空字符串,一个空字符串的长度为0。