Regex 使用正则表达式从文本中提取全文

Regex 使用正则表达式从文本中提取全文,regex,Regex,我一直在分析数据,我得到了如下字符串: "Scottish Premier League (click here to open|close this coupon)" 我想使用正则表达式提取“苏格兰超级联赛”,其中Scottish匹配第1组和Premier League匹配第2组 MatchCollection matchCol = reg.Matches("Scottish Premier League (click here to open|close this coupon)");

我一直在分析数据,我得到了如下字符串:

"Scottish Premier League (click here to open|close this coupon)"
我想使用正则表达式提取“苏格兰超级联赛”,其中
Scottish
匹配第1组和
Premier League
匹配第2组

MatchCollection matchCol = reg.Matches("Scottish Premier League (click here to open|close this coupon)");
请告诉我使用正则表达式的方法

MatchCollection matchCol = reg.Matches("Scottish Premier League (click here to open|close this coupon)");

/(苏格兰)(超级联赛)/

/(苏格兰)(超级联赛)/

鉴于您只给出了一个将应用正则表达式的字符串,很难判断此解决方案是否适用于其他各种情况:

/^(\w*) (.*) \(/

考虑到您只给出了一个将应用正则表达式的字符串,很难判断此解决方案是否适用于其他各种情况:

/^(\w*) (.*) \(/

如果您只想匹配每个特定单词,那么您的正则表达式可以是:

(Scottish) (Premier League)
如果要匹配第一个单词,请匹配下两个:

([\w]+) ([\w]+ [\w]+)
另一种解释单词之间多个空格的书写方式是:

(\w+)\s+(\w+\s+\w+)

如果您只想匹配每个特定单词,那么您的正则表达式可以是:

(Scottish) (Premier League)
如果要匹配第一个单词,请匹配下两个:

([\w]+) ([\w]+ [\w]+)
另一种解释单词之间多个空格的书写方式是:

(\w+)\s+(\w+\s+\w+)
基本和直接:

$s =  "Scottish Premier League (click ... coupon)";
$s =~ m/(Scottish) (Premier League)/;
print "Match groups one and two: '$1' '$2'\n";
您可能需要更广泛的匹配:

$s =  "Generalized Matching on a string (click ... coupon)";
$s =~ m/^(\S+)\s(.+)\s+\(click/;
print "Match groups one and two: '$1' '$2'\n";
这些是Perl;下次再具体点

另外,请自便,使用诸如或之类的工具。

基本和直接:

$s =  "Scottish Premier League (click ... coupon)";
$s =~ m/(Scottish) (Premier League)/;
print "Match groups one and two: '$1' '$2'\n";
您可能需要更广泛的匹配:

$s =  "Generalized Matching on a string (click ... coupon)";
$s =~ m/^(\S+)\s(.+)\s+\(click/;
print "Match groups one and two: '$1' '$2'\n";
这些是Perl;下次再具体点


另外,请自便,使用一个工具,如或。

而不是Regex,哪种语言将被用作使解析器工作的“粘合剂”?另外,你可能不会局限于这一个苏格兰超级联赛,是否有类似的关键字/模式?这里的标准是什么?如果只是第一个单词,就不需要正则表达式。然而,除此之外,任何东西都几乎是自然语言处理。除了正则表达式之外,哪种语言将被用作使解析器工作的“粘合剂”?另外,你可能不会局限于这一个苏格兰超级联赛,是否有类似的关键字/模式?这里的标准是什么?如果只是第一个单词,就不需要正则表达式。但是,除此之外,任何东西都几乎是自然语言处理。在编辑之前,我设置了-1(在5分钟的间隔内),现在它不允许我更改,对不起。尽管如此,你为什么要包括第一个(显然完全是开玩笑的)例子?@R.Pate。完全没有问题,;当一个答案出现一天或更长时间时,你将学会等待投票结果。回答你的问题:因为它是正确的。我不玩猜谜游戏来回答问题。我在你编辑之前设置了-1(在5分钟的间隔内),现在它不允许我更改,对不起。尽管如此,你为什么要包括第一个(显然完全是开玩笑的)例子?@R.Pate。完全没有问题,;当一个答案出现一天或更长时间时,你将学会等待投票结果。回答你的问题:因为它是正确的。我不玩猜谜游戏来回答问题。我推荐这个解决方案。工作非常完美。最好将其写成
/^(\w+)(\w+\w+)/
,因为不需要将方括号放在单个字符周围,您只希望字符串的起始部分,而不希望使用我推荐的解决方案,例如,“here”,“to open”。工作非常完美。最好将其写成
/^(\w+)(\w+\w+)/
,因为不需要将方括号括在单个字符周围,您只需要字符串的起始部分,而不需要,例如,“here”,“to open”我必须确定位置是苏格兰,然后我可以在替换苏格兰=>空后获得英超联赛。感谢allI,我必须确定位置是苏格兰,然后我可以在替换苏格兰=>空后获得英超分区。谢谢大家