簡體   English   中英

查找MySQL正則表達式中的所有特殊字符

[英]Find all special characters in a MySQL regexp

我想匹配以下正則表達式: \\[\\[\\.\\\\{0,}(.)?\\.\\]\\] ,所以:

[然后是[和一個. ,然后是可能的數字\\ (0或更大),然后是單個字符,然后是. 其次是兩個]

這是為了找到[[.g.]]g , '[[\\克。]]'為g ,而且[[.\\\\g.]]g 我有以下代碼(例如):

preg_match_all( '/\[\[\.(.)?\.\]\]/', "[[.g.]]", $matches );

找到g作為匹配項。 如果我想忽略轉義字符,可以將模式更改為\\[\\[\\.\\\\{0,}(.)?\\.\\]\\] ,所以:

preg_match_all( '/\[\[\.\\{0,}(.)?\.\]\]/', "[[.\\\\g.]]", $matches );

我希望g回來,但我什么也沒得到。 regexp現在表示:兩個[ ,后跟一個. ,任意數量的轉義字符,然后是我們要查找的字符,后跟.]] 我究竟做錯了什么?

您可能無法使用正則表達式進行匹配,因為兩個反斜杠表示一個(由於轉義),請嘗試此操作(兩個反斜杠可以轉義,所以總共有4個):

$re = '/\[\[\.\\\\{0,}(.)?\.\]\]/m';
$str = '[[.g.]]
[[.\\g.]]
[[.\\\\g.]]
[[.\\\\\\\\g.]]';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

現場演示在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM