[英]Merge two regexes
我写了以下正则表达式:
(?:.*[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,
我已经编写了另一个正则表达式来捕获(类似的组),因为我无法在一个 go 中这样做(即使用一个正则表达式)。 这是我的第二个正则表达式:
这次匹配非常简单:我需要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
是来自正则表达式模式的 matcher object。
如果您想保持当前的方法,您可以使用
.*?\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*
- 零个或多个空格(.*?)
- 第 1 组(替换模式中的$1
指的是该组值):除换行符之外的零个或多个字符,尽可能少\s*nr.*
- 零个或多个空格、 nr
和零个或多个除换行符之外的字符,尽可能多。另一种方法是使用正则表达式进行提取,
\b(?:[sS]trony\s+[lL]okalne(?:\s+GW\s+-)?|GW)\s+(.*?)\s+nr\b
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));
}
}
}
}
Output:
"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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.