gpt4 book ai didi

java - 为什么 Java 正则表达式 "|"可以为任何输入字符串找到匹配的子字符串?

转载 作者:行者123 更新时间:2023-12-01 17:54:27 24 4
gpt4 key购买 nike

我试图理解为什么正则表达式以“|”结尾(或者简单地“|”本身)将找到一个匹配的子字符串,其起始索引为 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

我对它甚至是一个有效的正则表达式这一事实感到困惑。更令人困惑的是 start 和 end 都是 0。

希望有人能向我解释一下。

最佳答案

正则表达式中的管道表示“或”。所以你的正则表达式基本上是“(空字符串)或(空字符串)”。它成功地在字符串的开头找到了一个空字符串,并且空字符串的长度为0。

关于java - 为什么 Java 正则表达式 "|"可以为任何输入字符串找到匹配的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46415912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com