[英]How to match multiple words with hyphen in perl regexp
我想知道如何使用perl正則表達式匹配url中連字符分隔的多個單詞(包含空格)。 例如,
url = &name=abc&age=12&address=ab - cd&city=xyz;
url = &name=abc&age=12&address=abcd&city=xyz;
在給定的URL中,我想單獨匹配地址字段,並將其替換為空。
我正在嘗試此操作,但它與連字符和第一個URL后面的單詞不匹配,但對於第二個URL則工作正常。
url =~ s/\&address=(\w+)//g;
任何幫助將不勝感激。
正則表達式是一種不錯的方法,但是它必須通過潛在地刪除可能重要的其他信息(例如片段)來破壞URL的完整性。
另一種方法是使用URI::QueryParam
模塊覆蓋所有內容, 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";
取消注釋,嘗試其中一種方法,它應該對您有用,有關更多幫助,請用所需的輸出注釋。
#!/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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.