6

このAPIから:

複数行

public static final int MULTILINE

複数行モードを有効にします。複数行モードでは、式^$は、それぞれ行末記号または入力シーケンスの末尾の直後または直前に一致します。デフォルトでは、これらの式は入力シーケンス全体の最初と最後でのみ一致します。

複数行モードは、埋め込みフラグ式を介して有効にすることもできます(?m)

パターンを標準設定で作成した場合と標準設定で作成した場合の違いについて、実際のコード例を作成できる人はいPattern.MULTILINEますか?

デフォルトの境界マッチャーは、このチュートリアルで説明されているように^、行頭と行末を一致させる必要があります。$

を使うと何が変わるのPattern.MULTILINE

4

1 に答える 1

9

不自然な例: Java ソース ファイル内の特定のインポート行に一致させたい場合は、次のようにします。

import foo.bar.Baz;

複数行である入力の任意の場所にその行を一致させるには、Pattern.MULTILINEこの正規表現と一緒に使用するのがより簡単な解決策です。

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

ここで、^は改行の$直後と直前に一致します。そのような状況で望ましいものです。

と:

このチュートリアルで説明されているように、デフォルトの境界マッチャー ^ は行頭と $ 行末に一致する必要があります。

これは真実ではありません。デフォルトでは、 は入力^の先頭に一致し、入力の末尾に一致します。$

図:

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
于 2013-07-11T11:55:32.253 に答える