我需要RegEx的幫助。這個概念很簡單,但實際的解決方案遠遠超出我知道如何解決的任何問題。如果任何人都可以解釋我如何達到我想要的效果(並提供任何示例代碼的解釋),這將非常感謝!MySQL - 令人困惑的RegEx變量問題
基本上,想象存儲以下字符串數據庫表:
'My name is $1. I wonder who $2 is.'
首先,請記住,美元符號,數字格式是一成不變的。這不僅僅是爲了這個例子 - 這就是實際存儲這些通配符的方式。我希望像下面這樣的輸入能夠返回上面的字符串。
'My name is John. I wonder who Sarah is.'
我該如何創建一個查詢,以這種格式搜索通配符,然後返回適用的行?我想象一個正則表達式是最好的方式。請記住,從理論上講,任何數量的通配符都應該是可以接受的。
現在,這是我現有查詢的一部分,它將內容拖出數據庫。連接等等,因爲在單個數據庫單元中,有多個字符串由豎線連接起來。
AND CONCAT('|', content, '|')
LIKE CONCAT('%|', '" . mysql_real_escape_string($in) . "', '|%')
我需要修改^此行是與作爲查詢的一部分變量工作,同時保持到位當前效果(豎線等)。如果RegEx也考慮了條形圖,那麼可以刪除CONCAT()函數。
下面是一個例子字符串拼接,因爲它可能會出現在數據庫:
Hello, my name is $1.|Hello, I'm $1.|$1 is my name!
查詢應該能夠匹配任何字符串中的塊,然後返回該行是否有一場比賽。變量$1
應被視爲通配符。垂直條總是會分隔塊。
如果每個獨立的字符串只有一個模式,你爲什麼不只是添加一種模式索引列,使搜索更容易?那麼你可以一起加入字符串和模式,並在PHP端創建正則表達式匹配? –