0

これらの名前付きグループをそれぞれ別の行に抽出する正規表現を見つけようとしています。さまざまな組み合わせを試しましたが、行き詰まっています。たとえば、 localityDefault を抽出できませんが、次のようになります。

hasData false

patternMatch7() null

public static void main(String[] args) throws Exception {
    String patternOfData = ".*?orgUnit1Default=(?<orgUnit1Default>\\S+)\\s+" +
            "orgUnit2Default=(?<orgUnit2Default>\\S+)\\s+" +
            "organizationDefault=(?<organizationDefault>\\S+)\\s+" +
            "localityDefault=(?<localityDefault>\\S+)\\s+?" +
            "stateDefault=(?<stateDefault>\\S+)\\s+?" +
            "countryDefault=(?<countryDefault>\\S+)\\s+";
    String receivedDataString = "orgUnit1Default=window washers \n"
            + "orgUnit2Default=All Cleaners \n"
            + "organizationDefault=Cleaning Dept \n"
            + "localityDefault=Small Town Here\n"
            + "stateDefault=Washington\n" 
            + "countryDefault=US";
    String toExtractName = "organizationDefault";

    System.out.println("patternMatch7()  "
            + patternMatch7(patternOfData, receivedDataString,
                    toExtractName));
}

static String patternMatch7(String patternOfData,
        String receivedDataString, String toExtractName) throws IOException {
    Pattern dataExtractionPattern;
    dataExtractionPattern = Pattern.compile(patternOfData, Pattern.DOTALL);
    Matcher matcher = dataExtractionPattern.matcher(receivedDataString);
    boolean hasData = false;
    String dataValue = null;
    if (matcher.find()) {
        hasData = true;
        dataValue = matcher.group(toExtractName);
    }
    System.out.println("hasData " + hasData);

    return dataValue;
}
4

2 に答える 2

1

データが正確にどのように見えるかわかりませんが、この正規表現を試していただけますか?

String patternOfData = ".*?orgUnit1Default=(?<orgUnit1Default>.+)\\s*\n" +
        "orgUnit2Default=(?<orgUnit2Default>.+)\\s*\n" +
        "organizationDefault=(?<organizationDefault>.+)\\s*\n" +
        "localityDefault=(?<localityDefault>.+)\\s*\n" +
        "stateDefault=(?<stateDefault>.+)\\s*\n" +
        "countryDefault=(?<countryDefault>.+)";
于 2013-09-17T02:30:16.740 に答える
0

パターンは改行の前に空白があると想定していますが、ローカリティには改行の前に空白がありません -- + の代わりに * を使用してください

+ "organizationDefault=清掃部門\n"
                                    ^ スペース文字

+ "localityDefault=ここの小さな町\n"
                                  ^ スペース文字なし...

代わりに LDAP 検索を使用しないのはなぜですか??

于 2013-09-17T03:02:06.143 に答える