ホームページ >Java >&#&チュートリアル >一致するテキストを含めずに正規表現一致後のテキストを抽出するにはどうすればよいですか?
正規表現一致後のテキストの検索
正規表現の領域に足を踏み入れ、特定のニーズに遭遇しました。それは、正規表現に一致するテキストを抽出するというものです。一致自体は含まず、特定の一致。これをどのように実現できるかを見てみましょう。
提供されたコードでは、最初のパターン "sentence(.*)" は "sentence" と正確に一致しますが、次のテキストもキャプチャされ、結果として "sentence that a great" が得られます。 。」後続のテキストだけを分離するには、「肯定的な後読みアサーション」と呼ばれる手法を使用します。
肯定的な後読みアサーション
肯定的な後読みアサーション (?<=文) は、指定されたテキスト (「文」) の直後の文字列内の位置を、一致に組み込むことなく一致させます。このアサーションを利用することで、新しいパターンを作成できます。
(?<=sentence).*
Java 実装
これを Java で実装するには、コードを次のように変更します。
import java.util.regex.*; public class RegexPostMatch { public static void main(String[] args) { String example = "Some lame sentence that is awesome"; Pattern pattern = Pattern.compile("(?<=sentence).*"); Matcher matcher = pattern.matcher(example); if (matcher.find()) { System.out.println("Text after 'sentence': " + matcher.group()); } else { System.out.println("No match found"); } } }
この修正されたコードは、次のような望ましい結果を出力します。「それは素晴らしいです。」
追加メモ
Java では、ポジティブ後読みアサーションは以下に限定されます。有限長の部分式。これは、「(?<=sentences*)」のようなパターンは機能しないことを意味します。代わりに、
(?<=sentence\s+|\W+sentence)のような代替手段の使用を検討してください。
以上が一致するテキストを含めずに正規表現一致後のテキストを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。