我想知道如何使用perl正则表达式匹配url中用连字符分隔的多个单词(包含空格)。例如,
url = &name=abc&age=12&address=ab - cd&city=xyz;
url = &name=abc&age=12&address=abcd&city=xyz;
在给定的网址中,我想单独匹配地址字段并将其替换为空。
我正在尝试这个,但它不匹配连字符和第一个网址后面的单词,但它对第二个网址工作正常。
url =~ s/\&address=(\w+)//g;
非常感谢任何帮助。
答案 0 :(得分:5)
正则表达式是一种不错的方法,但它有可能通过潜在地删除可能很重要的其他信息(例如片段)来破坏URL的完整性。
另一种方法是使用URI::QueryParam
模块用任何内容覆盖值:
#!/usr/bin/perl
use strict;
use warnings;
use URI;
use URI::QueryParam;
my $url = 'http://www.domain.com/a/b/c?name=abc&age=12&address=ab - cd&city=xyz';
my $uri = URI->new($url);
$uri->query_param('address', '');
print "Address is now: " . $uri->query_param('address') . "\n";
答案 1 :(得分:1)
通过取消评论尝试其中之一,应该适合您,如需更多帮助,请使用您想要的所需输出进行评论。
#!/usr/bin/perl
$url = '&name=abc&age=12&address=ab - cd&city=xyz';
$url = '&name=abc&age=12&address=abcd&city=xyz';
$url =~ s/address=(.*)&//g;
#$url =~ s/address=(.*)&/$1/g;
print $url;