在Perl中,如果我知道文本的前后部分,如何在字符串中提取文本?
示例:
输入:www.google.com/search?size=1&make=BMW&model=2000
我想提取“宝马”这个词,它总是介于“& make =”和下一个“&”
之间答案 0 :(得分:13)
不要使用正则表达式。使用URI和URI::QueryParam,如下所示:
use strict;
use warnings;
use URI;
use URI::QueryParam;
my $u = URI->new('http://www.google.com/search?size=1&make=BMW&model=2000');
print $u->query_param('make');
答案 1 :(得分:1)
使用正则表达式:
my ($captured_string) = $link =~ /\&make=(\w+)\&/;
我的正则表达式假定你想要捕获make字段中出现的任何内容。 \w
捕获大写和小写字母。如果你想捕获别的东西,你可以使用一个字符类。像这样[\w\s]+
会匹配多个字母和空格。您可以在[ ]
个字符之间添加任意内容以匹配任何顺序。
( )
实际上是捕获的内容。如果你删除它然后它将匹配(你应该在if语句中使用它。如果你想捕获多个字符串(比如说你也想要模型。根据你的例子,你可以使用第二组括号,如这样:
my ($make, $model) = $link =~ /\&make=(\w+)\&model=([A-Za-z0-9]+)/;
希望有所帮助!