2016-10-14 23 views
-1

私は文字列に変換して依存関係を解析しようとするpom.xmlファイルを持っています。例正規表現でXML文字列を解析する

<dependencies> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-log4j2</artifactId> 
    </dependency>  
</dependencies> 

のために私のようなすべてのテキストを取得するために

({<}dependency{>}.*?{</}dependency{>}) 

私の目標は、パターンを使用してdependencyタグの間でコンテンツを取得しようとしています。

<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-web</artifactId> 

これを行う正しいパターンは何ですか?

+5

なぜ適切なxmlライブラリを使用しないのですか? –

+0

regexpsは、XMLを解析するための間違ったツールです。あなたはすべてのケースを正しく処理することはできません(コメント、スペース、改行、CDATAセクションなどを考えてください) – Henry

+0

@HenryはJavaのunmarshallerのような他のメソッドのために動きます –

答えて

2

この

Pattern regex = Pattern.compile("<dependency>(.*?)</dependency>", Pattern.DOTALL); 

Pattern.DOTALLを試してみては - 改行文字のドットと一致するように修飾子です。

+0

を返す必要が期待@ PavneetシンEditPadで動作します。 '/'の余分なエスケープ文字のようないくつかの詳細があるかもしれません。一般的には正しいアプローチです。複数行の文字列のための簡単な正規表現です。 PHPには、そのための修飾子 's'があります。 EditPadでは、 "Dot"モードを有効にします。 Javaの 'Pattern.DOTALL'です。 Etc. – NikitOn

+0

'matcher.group(1)'の使用についても言及しておけばうまくいってもうまくいくはずです。 –

関連する問題