Top > 正規表現 > [^...]


[^否定する文字]

#!/usr/bin/perl

@searchstr = ("acha-porute-piipo");
@match1 = grep /a[^c]/, @searchstr;
@match2 = grep /porute[^-]/, @searchstr;
@match3 = grep /&[^o]/, @searchstr;

print "Content-type:text/html\n\n";

print "aの文字に続く文字が「c」以外の文字列 = @match1<br>";
print "poruteの文字に続く文字が「-」以外の文字列 = @match2<br>";
print "末尾の文字が「o」以外の文字列 = @match3<br>";

●出力結果
aの文字に続く文字が「c」以外の文字列 = acha-porute-piipo
poruteの文字に続く文字が「-」以外の文字列 =
末尾の文字が「o」以外の文字列 = 

指定した以外の文字列が含まれない時は表示されます。
!!
grep /a[^c]/, @searchstr;
aの次に「c」があるけど、表示しては駄目なのでは?
確かに。しかし、その後に続く文字を見ると、aの後に「-」が続く文字がでてきます。
これにより初めの条件がキャンセルされているようです。
grep /^a[^c]/, @searchstr;
とすると、aの後の「c」がマッチして文字は検出されなくなります。



Copyright © 2015 AchaPorutePiipo All Rights Reserved.