我正在學習正則表達式,並認爲我已經開始掌握了。但後來......拆分字符串與正則表達式 w w *? w +?
我試圖分裂一個字符串,我需要幫助理解這樣一個簡單的事情:
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+? - []
爲什麼沒有任何兩個第一線的任何字符分割字符串? 第三個表達式\ w * ?,(問號防止貪婪)按我的預期工作,在每個字符上分割字符串。星號,零個或多個匹配項返回一個空數組。
我已經試過內記事本+ +,並在節目中表達,它顯示了5場比賽,如:基本
Scanner ls = new Scanner(input);
while(ls.hasNext())
System.out.format("%s ", ls.findInLine("\\w");
Output is: a b c d e
這真的讓我爲難,
我不能相信你會被分配到Java的正則表達式作業,而不是使用不需要的語言\\ dd \\ oo \\ uu \\ bb \\ ll \\ ee \\ \\ bb \\ AA \\立方厘米\\ KK \\ SS \\ LL \\ AA \\ SS \\ HH \\ EE \\ SS !!什麼酷刑!另外你甚至沒有編譯時檢查正則表達式的語法,也沒有調試等等等等。Java對於這類工作並不是很方便。你應該用更加同情的語言來開發你的正則表達式,然後把最終結果傳給Java。 – tchrist 2012-03-18 19:04:47
@tchrist你在想什麼語言? – Kennet 2012-03-19 08:29:32
除了像sed和awk這樣的shell工具之外,Perl和Ruby還有第一類正則表達式,甚至Python也可以讓你跳過雙擊頁面。 Perl是唯一一個使用正則表達式調試器的人。 – tchrist 2012-03-19 13:22:35