正则表达式在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字符串 使用。

+0

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

+0

@PatrickS Ahhh,我明白了。对不起,我没有考虑不包含'/'的相对路径。我已经用更好的解决方案更新了我的答案 – Robbie 2012-04-01 21:46:36