$pattern = '/\\\p\\\/';
if (preg_match($pattern, "\p\")) {
echo "Correct";
} else {
echo "Incorrect";
}
我不明白第一個\\\ p。 爲什麼\\ p不起作用?preg_match a back slash
$pattern = '/\\\p\\\/';
if (preg_match($pattern, "\p\")) {
echo "Correct";
} else {
echo "Incorrect";
}
我不明白第一個\\\ p。 爲什麼\\ p不起作用?preg_match a back slash
注意"\p\"
是不是有效的字符串:
\"
逃脫的報價,所以該字符串未終止\p
文字p
字符,匹配其是不是你想要的\p\
,你必須寫它像t他:"\\p\\"
要匹配\p\
,用途:
$regex = '~\\\\p\\\\~';
echo (preg_match($regex,"\\p\\")) ? "Matches" : "Doesn't Match";
看到輸出在online demo的底部。
這裏的問題是,字符串和正則表達式使用轉義字符,他們需要加倍以實現預期的行爲。
因此,在這種情況下,你需要在正則表達式四個反斜槓,其中兩個在搜索字符串:
if (preg_match('/\\\\p\\\\/', '\\p\\')) {
echo "Hurray!\n";
}
之所以'/\\\p\\\/'
的作品,是因爲\p
和\/
在一個沒有特殊含義帶引號的字符串,所以反斜槓逐字打印。換句話說,PHP 糾正了你的字符串有正確的含義;那就是說,你應該使用正確數量的轉義字符。
btw,"\\p\"
只是錯誤的,會導致解析錯誤;我會假設這是一個錯字。
您輸入的字符串「\ p \」不正確 – mmonem
該模式應該是「'/ \\\ p \\\\ /'」,搜索字符串應該是''\\ p \\'' 。 –