ホームページ >Java >&#&チュートリアル >Java 正規表現を使用して複数行のテキストを正しく照合するにはどうすればよいですか?

Java 正規表現を使用して複数行のテキストを正しく照合するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-10 11:30:10192ブラウズ

How Can I Correctly Match Multiline Text Using Java Regular Expressions?

正規表現を使用した複数行のテキストの一致

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。