バックスラッシュが 1 つと 2 つある文字列を区別する必要があります。Perl はそれらを同等に扱います:
print "\n" . '\qqq\www\eee\rrr';
print "\n" . '\\qqq\www\eee\rrr';
同じ結果が得られます:
\qqq\www\eee\rrr
\qqq\www\eee\rrr
さらに、次の呼び出し:
print "\n" . leadingBackSlash('\qqq\www\eee\rrr');
print "\n" . leadingBackSlash('\\qqq\www\eee\rrr');
print "\n" . leadingBackSlash('\\\qqq\www\eee\rrr');
print "\n" . leadingBackSlash('\\\\qqq\www\eee\rrr');
機能する:
sub leadingBackSlash {
$_ = shift;
print "\n$_";
print "\n" . length($_);
if( m/^\\\\/) {
print "\ndouble backslash is matched";
}
if( m/^\\/) {
print "\nsingle backslash is matched";
}
}
結果が生成されます:
\qqq\www\eee\rrr
16
single backslash is matched
\qqq\www\eee\rrr
16
single backslash is matched
\\qqq\www\eee\rrr
17
double backslash is matched
single backslash is matched
\\qqq\www\eee\rrr
17
double backslash is matched
single backslash is matched
つまり、2 つのバックスラッシュが 1 つのバックスラッシュに一致します。
単一のバックスラッシュではなく二重のバックスラッシュに一致する正規表現を教えてください。