我對以下示例有疑問:import java.util.regex.*;class Regex2 { public static void main(String[] args) { Pattern p = Pattern.compile(args[0]); Matcher m = p.matcher(args[1]); boolean b = false; while(b = m.find()) { System.out.print(m.start() + m.group()); } }}和命令行:java Regex2 "\d*" ab34ef有人可以向我解釋一下,為什么結果是:01234456正則表達式模式為d *-表示第一個或多個,但在args [1]中還有更多位置,謝謝
3 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
\d*匹配0個或多個數字。因此,它甚至會匹配每個字符之前和最后一個字符之后的空字符串。首先在index之前0,然后在index之前1,依此類推。
因此,對于string ab34ef,它匹配以下組:
Index Group
0 "" (Before a)
1 "" (Before b)
2 34 (Matches more than 0 digits this time)
4 "" (Before `e` at index 4)
5 "" (Before f)
6 "" (At the end, after f)
如果您使用\\d+,那么您只會在那里得到一個小組34。

冉冉說
TA貢獻1877條經驗 獲得超1個贊
如果0
索引指向“ Before a”并且2
索引位于處,34
怎么可能呢?如果0
是之前,那么豈不是3
說在指數34
?掃描儀是否在一個位置并向左看?掃描儀的位置是否在,但在之前在?
添加回答
舉報
0/150
提交
取消