1. ホーム
  2. java

[解決済み] 正規表現にマッチした後に続くテキストを取得する

2022-12-21 05:36:01

質問

Regexを使うのが初めてで、たくさんのチュートリアルを見てきましたが、私がやりたいことに当てはまるものが見つかりませんでした。

私は何かを検索したいのですが、検索文字列自体ではなく、それに続くすべてを返します。

例:" なんかすごいダサい文章 "です。

は、"で検索してください。 "です。

return " それはすごい "。

どんな助けでも大いに結構です

これは今のところ私の正規表現です

sentence(.*) 

が、返ってくる。 すごい文章

Pattern pattern = Pattern.compile("sentence(.*)");

Matcher matcher = pattern.matcher("some lame sentence that is awesome");

boolean found = false;
while (matcher.find())
{
    System.out.println("I found the text: " + matcher.group().toString());
    found = true;
}
if (!found)
{
    System.out.println("I didn't find the text");
}

どのように解決するのですか?

コメントでご質問のあった、"正規表現だけ"で可能です。

(?<=sentence).*

(?<=sentence) ポジティブ・ルックビハインド・アサーション . これは文字列の特定の位置、つまりテキスト sentence の直後で、そのテキスト自体をマッチの一部とすることなくマッチします。その結果 (?<=sentence).* の後にあるすべてのテキストにマッチします。 sentence .

これは正規表現の非常に素晴らしい機能です。しかし、Javaでは、これは有限長の部分式、すなわち (?<=sentence|word|(foo){1,4}) は合法ですが (?<=sentence\s*) は合法ではありません。