簡體   English   中英

如何在Perl正則表達式中用連字符匹配多個單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM