デフォルトでは、 “。”は改行に一致しません。複数の行を照合するには、接頭辞(?s)を追加するか、Pattern.DOTALLフラグを有効にします。

1.例

アドレスサンプルは、「アドレス1」のみを抽出する必要があります。

Starting...
Address 1: 88 app 2/8
    superman taman, puchong
    36100, Malaysia
Address 2: abc
End

Address 1:\\s(.** )Address 2:

  • 正しい:** “アドレス1″を抽出するには、接頭辞(?s)を追加します。

(?s)Address 1:\\s(.** )Address 2:

または、Pattern.DOTALLモードを有効にします。

Pattern.compile(Address 1:\\s(.** )Address 2:, Pattern.DOTALL);

2.正規表現の例

例は、 “アドレス1″を取得するために一致する正規表現の複数の行を使用する。

package com.mkyong.regex

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RunExampleTest{

    private Pattern addressPattern = Pattern.compile(ADDRESS__PATTERN);
    private Matcher matcher;

   //Alternative
   /** private Pattern addressPattern =
        Pattern.compile(ADDRESS__PATTERN, Pattern.DOTALL);** /
    private static final String ADDRESS__PATTERN = "(?s)Address 1:\\s(.** )Address 2:";

    public static void main(String[]args) {

        String data = "Testing... \n" +
            "Address 1: 88 app 2/8\n" +
            "superman taman, puchong\n" +
            "36100, Malaysia\n" +
            "Address 2: abc" +
            "testing end";

        RunExampleTest obj = new RunExampleTest();
        List<String> list = obj.getAddress(data);

        System.out.println("Test Data : ");
        System.out.println(data + "\n");

        System.out.println("Address Resut : " + list);

    }

    private List<String> getAddress(String data){

        List<String> result = new ArrayList<String>();

        matcher = addressPattern.matcher(data);

        while (matcher.find()) {
            result.add(matcher.group(1));
        }

        return result;
    }

}

出力

Test Data :
Testing...
Address 1: 88 app 2/8
superman taman, puchong
47100, Malaysia
Address 2: abctesting end

Result :[88 app 2/8
superman taman, puchong
47100, Malaysia]....

=== 参考文献

.  http://www.emacswiki.org/emacs/MultilineRegexp[Emacs Multiline Regexp

例]。 http://en.wikipedia.org/wiki/Regular__expression[Wikipedia:Regular

式/]

link://tag/regex/[正規表現]