2012-04-01 171 views
2

試圖將Drupal站點中的「文件」文件夾位置從/ files更改爲/ sites/default/files。正則表達式在phpMyAdmin中搜索

爲了避免其他任何變動,如

http://www.google.com/profiles/ 

我試圖用一個基本的正則表達式用字邊界。

\bfiles/ 

regexpal快速檢查工作正常,但是當我在phpMyAdmin的搜索輸入上面的,檢查「爲正則表達式」複選框,我沒有得到預期的結果。

兩個問題:

  • 我應該怎麼寫我表達一個單詞邊界,使其工作在phpMyAdmin?

  • 我真的是SQL語句的新手!是否有可能編寫一個SQL查詢,只查找「files /」的每一處出現,用「sites/default/files /」代替它?

回答

4

按照MySql docs,使用正則表達式風味POSIX 1003.2。對於這個味道正則表達式,單詞邊界如下:

[[:<:]](開始)[[:>:]](完)

讓你的正則表達式是:

[[:<:]]files/ 

如果你想使用SQL搜索和更換的[[:<:]]files/所有實例從一個特定領域在一個表中,你可以use a UDF such as the one found here

此外,你應該注意以下的同時使用正則表達式與MySQL:

因爲MySQL在字符串中使用C轉義語法(例如,「\ n」 代表換行字符),你必須加倍任何「\」你在你的REGEXP字符串 使用。

+0

不是真的!在你的例子中「files /」不匹配,那麼如果我搜索「files /」,「profiles /」也將匹配... – PatrickS 2012-04-01 20:33:55

+0

@PatrickS Ahhh,我明白了。對不起,我沒有考慮不包含'/'的相對路徑。我已經用更好的解決方案更新了我的答案 – Robbie 2012-04-01 21:46:36