2015-10-22 7 views
7

^と$を使用して行の先頭と末尾を示すパターンがあります。このような

Pattern pattern = Pattern.compile("^Key2 = (.+)$"); 

と入力:

String text = "Key1 = Twas brillig, and the slithy toves" 
    + "\nKey2 = Did gyre and gimble in the wabe." 
    + "\nKey3 = All mimsy were the borogroves." 
    + "\nKey4 = And the mome raths outgrabe."; 

しかしpattern.matcher(text).find()戻りfalse

この機能はありませんか? Pattern class documentationでは、概要が指定されています。

 
Boundary matchers 
^ The beginning of a line 
$ The end of a line 

答えて

9

はデフォルトでは、これらのシンボルは入力シーケンス全体の最初と最後に一致します。そのsame Pattern class documentation(強調は筆者付き)でさらに下

デフォルトでは、正規表現^と$は入力全体の、それぞれ、最初と最後に行末とのみ一致を無視しますシーケンス。マルチラインモードが有効になっている場合、^は入力の始めと入力の最後を除く行終端文字の後に一致します。 MULTILINEモードでは、$は行終端文字の直前または入力シーケンスの終わりと一致します。彼らはPattern.MULTILINEでパターンをコンパイルして、サマリー表に記載されているよう

は、だから、^と$の作業を行うことができます。

Pattern pattern = Pattern.compile("^Key2 = (.+)$", Pattern.MULTILINE); 
+0

素晴らしい:)私は過去 – AbtPst

+1

@AbtPstに自分自身これで苦労しています - 私自身も。 javadocの詳細は埋まっています。要約は簡単な説明を使用することができます。私はこれを何年もかけて何度も遭遇し、解決し、忘れてしまった。次回は、このstackoverflowの質問があります! –

関連する問題