首頁  >  文章  >  Java  >  如何使用正向後向斷言在正規表示式匹配後提取文字?

如何使用正向後向斷言在正規表示式匹配後提取文字?

Barbara Streisand
Barbara Streisand原創
2024-11-08 01:18:03756瀏覽

How to Extract Text After a Regex Match Using a Positive Lookbehind Assertion?

在正規表示式符合後擷取文字

在正規表示式(Regex) 領域,從文字中擷取特定資訊可能具有挑戰性。一項常見任務是檢索特定匹配項後面的文字。本文將引導您完成此過程,擴展您在「sentence」字串後查找文字的特定要求。

您現有的正規表示式模式「sentence(.*)」成功辨識了「sentence」字串。但是,它也會捕獲匹配的文字本身,這不是您想要的結果。

要實現您的目標,請考慮使用正向回顧斷言。此功能允許您匹配字串中的特定位置,而無需實際使匹配的文字成為結果的一部分。在您的情況下,您希望匹配“句子”之後的位置而不包含它。

以下修改後的正規表示式模式可以實現此目的:

(?<=sentence).*

模式細分:

  • (?
  • .*:這有效地匹配後行斷言後的任意數量的字符捕獲“sentence”後的文本。

在Java 中,您可以利用此模式來檢索所需的文本,如下所示:

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");
}

此程式碼將列印文字「that太棒了」正如預期的那樣,不包含“句子”字串。

以上是如何使用正向後向斷言在正規表示式匹配後提取文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn