如果您想保持当前的方法,您可以使用
.*?\b(?:[sS]trony\s+[lL]okalne(?:\s+GW\s+-)?|GW)\s*(.*?)\s*nr.*
请参阅regex demo。 详情:
-
.*? - 除换行符之外的任何零个或多个字符尽可能少
-
\b - 单词边界
-
(?: - 非捕获组的开始:
-
[sS]trony\s+[lL]okalne - Strony/strony,1+ 个空格,lokalne/Lokalne
-
(?:\s+GW\s+-)?|GW) - 一个或多个空格,GW,1+ 个空格,-,或一个 GW 字
-
\s* - 零个或多个空格
-
(.*?) - 第 1 组(替换模式中的$1 指的是该组值):除换行符之外的零个或多个字符,尽可能少
-
\s*nr.* - 零个或多个空格、nr 以及零个或多个除换行符以外的字符,尽可能多。
另一种方法是使用正则表达式进行提取,
\b(?:[sS]trony\s+[lL]okalne(?:\s+GW\s+-)?|GW)\s+(.*?)\s+nr\b
见this regex demo。见Java demo:
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