使用正则表达式从文本
我一直与解析数据中提取完整的话,我有一个像字符串:使用正则表达式从文本
"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)
如果你想第一个字,然后接下来的两个匹配:
([\w]+) ([\w]+ [\w]+)
写这是占了词与词之间的多个空格的另一种方式是:
(\w+)\s+(\w+\s+\w+)
既然你只给了这将是应用的正则表达式一个字符串,它是很难说,如果这个解决方案会为您的各种其他情况下工作:
/^(\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;下次更具体。
另外,请帮助自己使用工具,如RegexBuddy或Expresso。
我在编辑之前设置了-1(在5分钟的保证金范围内),现在它不会让我改变,对不起。尽管你为什么要包含第一个(显然完全是诙谐的)例子? – 2009-11-18 06:51:22
@R。佩特。完全不是问题;当答案是一天或更长时,你会学会等待投票。回答你的问题:因为它是正确的。我不玩猜谜游戏来回答问题。 – dlamblin 2009-11-18 06:54:17
除了正则表达式,哪种语言将被用作解析器工作的“胶水”?另外,你可能不会把自己限制在这个苏格兰超级联赛,有没有类似的关键字/模式......? – mjv 2009-11-18 06:36:36
这是什么标准?如果它只是第一个单词,则不需要正则表达式。然而,除此之外,任何事情几乎都是自然语言处理。 – Kobi 2009-11-18 06:37:05