my $s = 'src="/api/385/=VIGTIG%20UPDATE%20!.jpg?size=webview" /></span>';
のような文字列を持っている場合はどのようにして、その後/api/385/
と最初>
の間にある_
ですべて%20
を置き換えますか?
my $s = 'src="/api/385/=VIGTIG%20UPDATE%20!.jpg?size=webview" /></span>';
のような文字列を持っている場合はどのようにして、その後/api/385/
と最初>
の間にある_
ですべて%20
を置き換えますか?
一つの方法は、書くことである。その中_
で%20
を交換する結果と(/api/385/[^>]*>)
を置き換え
$s =~ s{(/api/385/[^>]*>)}{my $tmp = $1; $tmp =~ s/%20/_/g; $tmp}e;
。 (s///
でe
フラグが「交換-ものが表現、リテラルではありません文字列である」という意味。)
'[^>] *'はどういう意味ですか? –
ブラケット表記 '[...]'は、「文字クラス」を作成します。通常、「括弧内の文字」は、「aeiou」は「a」「e」「i」「o」「u」のいずれかの文字を意味し、 '' 1-5M-Q ''は' '1と5の間の任意のアスキー数字、または' M'と 'Q'のASCII大文字を意味しますが、文字クラスの最初の文字が^ '、それは反対を意味する。 '[^>]'は「*ではない文字」を意味します。アスタリスク '*'は "私が言ったことのゼロ以上(より多くはより良いもの)"を意味するので、 '[^>] *は"> 'ではないゼロ以上の文字を意味します"。 – ruakh
これは、あなたが
$s =~ s|(/=[^>]+)| (my $ss = $1) =~ s/%20/_/g; $ss |e;
をしたいが、あなたは%20
はスペースのための六角であることを知っている何だろうか?
どこ文字列から来たのでしょうか? DOMパーサーを使用するのは理にかなっていますか? – Tomalak
これはwiki mockupに変換されたhtmlですので、この時点では有効なhtmlではありません。 –