正则表达式在phpMyAdmin中搜索
问题描述:
试图将Drupal站点中的“文件”文件夹位置从/ files更改为/ sites/default/files。正则表达式在phpMyAdmin中搜索
为了避免其他任何变动,如
http://www.google.com/profiles/
我试图用一个基本的正则表达式用字边界。
\bfiles/
在regexpal快速检查工作正常,但是当我在phpMyAdmin的搜索输入上面的,检查“为正则表达式”复选框,我没有得到预期的结果。
两个问题:
我应该怎么写我表达一个单词边界,使其工作在phpMyAdmin?
我真的是SQL语句的新手!是否有可能编写一个SQL查询,只查找“files /”的每一处出现,用“sites/default/files /”代替它?
答
按照MySql docs,使用正则表达式风味POSIX 1003.2。对于这个味道正则表达式,单词边界如下:
[[:<:]]
(开始)[[:>:]]
(完)
让你的正则表达式是:
[[:<:]]files/
如果你想使用SQL搜索和更换的[[:<:]]files/
所有实例从一个特定领域在一个表中,你可以use a UDF such as the one found here
此外,你应该注意以下的同时使用正则表达式与MySQL:
因为MySQL在字符串中使用C转义语法(例如,“\ n” 代表换行字符),你必须加倍任何“\”你在你的REGEXP字符串 使用。
不是真的!在你的例子中“files /”不匹配,那么如果我搜索“files /”,“profiles /”也将匹配... – PatrickS 2012-04-01 20:33:55
@PatrickS Ahhh,我明白了。对不起,我没有考虑不包含'/'的相对路径。我已经用更好的解决方案更新了我的答案 – Robbie 2012-04-01 21:46:36