[^否定する文字]
#!/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」がマッチして文字は検出されなくなります。