我正在学习regexp,并认为我开始抓紧了.但是之后...
我试图拆分一个字符串,我需要帮助来理解这样一个简单的事情:
String input = "abcde";
System.out.println("[a-z] " + Arrays.toString(input.split("[a-z]")));
System.out.println("\\w " + Arrays.toString(input.split("\\w")));
System.out.println("\\w*? " + Arrays.toString(input.split("\\w*?")));
System.out.println("\\w+? " + Arrays.toString(input.split("\\w+?")));
The output is
[a-z] - []
\w - []
\w*? - [, a, b, c, d, e]
\w+? - []
Run Code Online (Sandbox Code Playgroud)
为什么两个第一行中的任何一行都没有在任何字符上拆分字符串?第三个表达式\ w*?,(问号防止贪婪)按照我的预期工作,在每个字符上分割字符串.星号,零个或多个匹配项返回一个空数组.
我在NotePad ++和程序中尝试了表达式,它显示了5个匹配项,如:
Scanner ls = new Scanner(input);
while(ls.hasNext())
System.out.format("%s ", ls.findInLine("\\w");
Output is: a b c d e
Run Code Online (Sandbox Code Playgroud)
这真让我困惑