我寫了以下正則運算式:
(?:.*[sS]trony [Ll]okalne(?: GW -)? )(. )(?: nr. )
它旨在匹配之間的內容strony lokalne GW - 及其變體(字串的左側位置)和nr(字串的右側位置)。在我的測驗用例中,這個正則運算式是有效的。我$1用來獲取我的捕獲組。請看一下它捕獲的內容(在 ** 和 ** 之間)。
strony lokalne GW - **Cz?stochowa** nr 28
[ DLO SZ ] - Strony Lokalne **Szczecin** nr
strony lokalne GW - **Olsztyn** nr 111
[ DLO KI ] - strony lokalne GW - **Kielce** nr 270,
strony lokalne GW - **?ód?** nr 17,
[ DLO SZ ] - Strony Lokalne **Szczecin** nr 72,
strony lokalne GW - **Warszawa** nr 125,
[ DLO KR ] - strony lokalne GW - **Kraków** nr 5,
[ DLO WA ] - Strony Lokalne **Warszawa** nr 152,
strony lokalne GW - **Zielona G?a** nr 128,
strony lokalne GW - **?ód?** nr 63,
我已經撰寫了另一個正則運算式來捕獲(類似組),因為我無法一次性完成(即使用一個正則運算式)。這是我的第二個正則運算式:
(?:GW -? ?)(. )(?: nr. )
這次匹配非常簡單:我需要之后GW 和之前的內容 nr。下面是一些示例:
GW **Szczecin** nr 50\n"
GW **TORU?** nr 96, wydanie z dnia 23/04/2004WYDARZENIA, str. 3\n"
GW **Lublin** nr 33, wydanie z dnia 08/02/2006WYDARZENIA , str. 3\n"
GW **Wroc?aw** nr 45, wydanie z dnia 23/02/2004WYDARZENIA, str. 3\n"
我如何合并這兩個正則運算式?
為了獲得我在 Java 中使用的捕獲組:matcher.replaceAll("$1"),matcher來自正則運算式模式的匹配器物件在哪里。
uj5u.com熱心網友回復:
如果你想保持你目前的方法,你可以使用
.*?\b(?:[sS]trony\s [lL]okalne(?:\s GW\s -)?|GW)\s*(.*?)\s*nr.*
請參閱正則運算式演示。詳情:
.*?- 盡可能少的除換行符以外的零個或多個字符\b- 一個詞的邊界(?:- 非捕獲組的開始:[sS]trony\s [lL]okalne-Strony/strony, 1 個空格,lokalne/Lokalne(?:\s GW\s -)?|GW)- 一個或多個空格、GW、 1 個空格-、或一個GW詞
\s*- 零個或多個空格(.*?)- Group 1($1在替換模式中指的是這個組值):除換行符以外的零個或多個字符,越少越好\s*nr.*- 零個或多個空格、nr和 零個或多個除換行符以外的字符,盡可能多。
另一種方法是使用正則運算式進行提取,
\b(?:[sS]trony\s [lL]okalne(?:\s GW\s -)?|GW)\s (.*?)\s nr\b
請參閱此正則運算式演示。請參閱Java 演示:
import java.util.*;
import java.util.regex.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
List<String> strs = Arrays.asList(
"strony lokalne GW - Cz?stochowa nr 28","[ DLO SZ ] - Strony Lokalne Szczecin nr ","strony lokalne GW - Olsztyn nr 111","[ DLO KI ] - strony lokalne GW - Kielce nr 270,","strony lokalne GW - ?ód? nr 17, ","[ DLO SZ ] - Strony Lokalne Szczecin nr 72, ","strony lokalne GW - Warszawa nr 125, ","[ DLO KR ] - strony lokalne GW - Kraków nr 5, ","[ DLO WA ] - Strony Lokalne Warszawa nr 152, ","strony lokalne GW - Zielona G?a nr 128, ","strony lokalne GW - ?ód? nr 63, ","","GW Szczecin nr 50","GW TORU? nr 96, wydanie z dnia 23/04/2004WYDARZENIA, str. 3","GW Lublin nr 33, wydanie z dnia 08/02/2006WYDARZENIA , str. 3","GW Wroc?aw nr 45, wydanie z dnia 23/02/2004WYDARZENIA, str. 3"
);
Pattern p = Pattern.compile("\\b(?:[sS]trony\\s [lL]okalne(?:\\s GW\\s -)?|GW)\\s (.*?)\\s nr\\b");
for (String str : strs) {
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println("\"" str "\" => " m.group(1));
}
}
}
}
輸出:
"strony lokalne GW - Cz?stochowa nr 28" => Cz?stochowa
"[ DLO SZ ] - Strony Lokalne Szczecin nr " => Szczecin
"strony lokalne GW - Olsztyn nr 111" => Olsztyn
"[ DLO KI ] - strony lokalne GW - Kielce nr 270," => Kielce
"strony lokalne GW - ?ód? nr 17, " => ?ód?
"[ DLO SZ ] - Strony Lokalne Szczecin nr 72, " => Szczecin
"strony lokalne GW - Warszawa nr 125, " => Warszawa
"[ DLO KR ] - strony lokalne GW - Kraków nr 5, " => Kraków
"[ DLO WA ] - Strony Lokalne Warszawa nr 152, " => Warszawa
"strony lokalne GW - Zielona G?a nr 128, " => Zielona G?a
"strony lokalne GW - ?ód? nr 63, " => ?ód?
"GW Szczecin nr 50" => Szczecin
"GW TORU? nr 96, wydanie z dnia 23/04/2004WYDARZENIA, str. 3" => TORU?
"GW Lublin nr 33, wydanie z dnia 08/02/2006WYDARZENIA , str. 3" => Lublin
"GW Wroc?aw nr 45, wydanie z dnia 23/02/2004WYDARZENIA, str. 3" => Wroc?aw
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361189.html
上一篇:如何在R中洗掉部分字符變數?
