2013-07-11 46 views
0

使用Pattern.MULTILINE從這個API在Java中的正則表達式

MULTILINE

public static final int MULTILINE

啓用多行模式。在多行模式下,表達式^$分別與行終止符或輸入序列的末尾之後或之前匹配。默認情況下,這些表達式只匹配整個輸入序列的開始和結束。

多行模式也可以通過嵌入式標誌表達式(?m)啓用。

任何人都可以使用Pattern.MULTILINE和標準設置創建模式的差異的真實代碼示例嗎?

邊界匹配器^默認應該匹配行的開頭,$行的末尾爲this教程解釋。

它通過使用Pattern.MULTILINE改變了什麼?

回答

3

人爲的例子:你想匹配在一個Java源文件中的特定進口線,說:

import foo.bar.Baz; 

爲了任何地方匹配輸入,這是多是線,更容易的解決辦法是使用Pattern.MULTILINE與這個表達式一起:

^\s*import\s+foo\.bar\.Baz\s*;\s*$ 

這裏^將換行和$前右右後匹配。在這種情況下,這是可取的。

和:

邊界匹配^爲默認值應該匹配行的開頭和本教程explaines行的$結束。

這是不真實的。默認情況下,^輸入$的開頭匹配輸入的結尾。

插圖:

public static void main(final String... args) 
{ 
    final Pattern p1 = Pattern.compile("^dog$"); 
    final Pattern p2 = Pattern.compile("^dog$", Pattern.MULTILINE); 

    final String input = "cat\ndog\nTasmanian devil"; 

    System.out.println(p1.matcher(input).find()); 
    System.out.println(p2.matcher(input).find()); 
} 

此輸出:

false 
true 
+0

所以在oracle教程我聯繫(在你報後位)是錯的? – Rollerball

+0

不完全錯誤,但在這個特定的點上。 – fge

+0

\ A和^然後有什麼區別? – Rollerball