在Perl中的字符串之间提取文本

时间:2010-09-01 03:11:46

标签: perl grep

在Perl中,如果我知道文本的前后部分,如何在字符串中提取文本?

示例:

输入:www.google.com/search?size=1&make=BMW&model=2000

我想提取“宝马”这个词,它总是介于“& make =”和下一个“&”

之间

2 个答案:

答案 0 :(得分:13)

不要使用正则表达式。使用URIURI::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]+)/;

希望有所帮助!