ホームページ >Java >&#&チュートリアル >Java 正規表現を使用して複数行のテキストを正しく照合するにはどうすればよいですか?
正規表現を使用した複数行のテキストの一致
Java で複数行のテキストを一致させようとすると、Pattern.MULTILINE 修飾子と(?m) 式。違いを説明し、解決策を提供する例を次に示します。
次の複数行テキストがあります:
User Comments: This is \t a\ta \n test \n\n message \n
Pattern.MULTILINE 修飾子を使用したパターン:
String pattern1 = "User Comments: (\W)*(\S)*"; Pattern p = Pattern.compile(pattern1, Pattern.MULTILINE); System.out.println(p.matcher(test).find()); // true
Pattern.MULTILINE 修飾子で ^ と $ が許可されているため、このパターンはテキストと正常に一致します。
(?m) を使用したパターン 式:
String pattern2 = "(?m)User Comments: (\W)*(\S)*"; System.out.println(test.matches(pattern2)); // false
このパターンは、(? が原因で一致しません。 m) 表現が間違っています。 DOTALL モードを有効にするには、(?s) にする必要があります。これにより、ドット (.) が改行文字と一致することが可能になります。
さらに、matches() メソッドを使用して、文字列全体がパターンと一致するかどうかを確認します。この場合、パターンは文字列の一部にのみ一致するため、matches() は false を返します。
解決策:
正規表現を使用して複数行のテキストを正しく一致させるにはでは、Pattern.DOTALL 修飾子とともに次のパターンを使用できます:
Pattern regex = Pattern.compile("^\s*User Comments:\s+(.*)", Pattern.DOTALL); Matcher regexMatcher = regex.matcher(subjectString); if (regexMatcher.find()) { ResultString = regexMatcher.group(1); }
このパターンは、「User」の後のテキストをキャプチャします。コメント:" を取得し、ResultString に保存します。
以上がJava 正規表現を使用して複数行のテキストを正しく照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。