2012-03-14 7 views
0

正規表現「A. * B」を使用して文字列を分割しようとしていますが、これは「A」と「B」の間の文字列を検索するのに問題ありません。しかし、ドット '。'改行文字\ n、\ rは含まれません。 これを達成する方法を教えてもらえますか?正規表現を使用してjavaで文字列を分割する

おかげ


おかげで、すべて。 Pattern.DOTALLは魅力的に働いた。

私はこれに関連する別の質問がありました。 'A'と 'B'(基本的に上記の正規表現にマッチする)の間のすべての文字列を抽出する必要がある場合、何が行われるべきですか?

matcherクラスのfind()とgroup()を使ってみましたが、下のパターンは文字列全体を返すようです。

Pattern p = Pattern.compile("A.*B",Pattern.DOTALL);

+1

ん '* B'の仕事を? –

+0

いいえ..私はすでにこれを試しました。 – Leo

答えて

0

は、ESP、java.util.regex.Pattern.compile(文字列の正規表現、int型のフラグ)を見てください。 DOTALLフラグ

1

はMULTILINEフラグでjava.util.regex.Patternのを使用します。

import java.util.regex.Pattern; 

Pattern pattern = Pattern.compile("A.*B", Pattern.MULTILINE); 
pattern.split(string); 
1

てみてください「[\。 \ s] * B "

また、DOTALLスイッチを指定して、"。偶数ラインターミネータを含みます。 Patternクラスのドキュメントを見てください。

0

yor正規表現を"A(.|\\s)*B"に変更してみてください。これはA followed by any character(.) or any white character(\s) any number of times followed by Bを意味します(javaコードでは二重引用符が必要です)。 Javaで正規表現(構造、空間文字など)のための

参考:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

1

は、このオプションを使用して正規表現をコンパイルします:[。\ n個の\ r]をPattern regex = Pattern.compile("A.*B",Pattern.DOTALL)

関連する問題