正则表达式匹配和替换文件的路径

时间:2012-08-30 07:57:16

标签: regex wordpress

我正在尝试进行正则表达式匹配,并将hotfile.com链接替换为我在数据库中的mp3文件(Wordpress)。

我曾经在我的网站上使用hotfile来播放mp3文件,现在我换成了CDN,有人可以帮我解决这个问题:

替换:http // hotfile.com / dl / 157490069 / c8732d4 / mp3_file_name.mp3 使用:http // p.music.cdndomain.com / vod / music.folder / 2010 / mp3_file_name.mp3

我一直在尝试这样一个简单的搜索和替换:http // hotfile.com / dl /%/%/,但它无效。

如果hotfile.com没有针对所有文件的不同文件夹,那么执行搜索和替换会更容易,下面是2个问题示例:

HTTP // hotfile.com / DL / 155490069 / c7932d4 / HTTP // hotfile.com / DL / 165490070 / c8745e7 /

我有500多个文件要替换。

由于

3 个答案:

答案 0 :(得分:0)

http://regex101.com/r/lK9wH4这样简单的事情应该有效: /^.+\/(.+)$/并替换为<your_new_url>\1

祝你好运。

答案 1 :(得分:0)

您可以使用notepad ++来搜索和替换所有文件

此特定样本:

以正则表达式模式搜索和替换:

搜索“http // hotfile.com /(。)/(。 .mp3)”

替换“http // p.music.cdndomain.com / vod / music.folder / 2010 / \ 2”

删除引号,但保留空格

更新:用于记事本++的screencapture

enter image description here

答案 2 :(得分:0)

由于你必须为你的wordpress数据库使用mysql,你可以按照你的要求用正则表达式进行替换:

正则表达式模式:#http://(www.)?hotfile.com/\w+/\w+/\w+/#

替换模式:http//p.music.cdndomain.com/vod/music.folder/2010/

另一种更简单的解决方案是使用mysql的简单字符串函数提取mp3文件名,例如

  1. 使用SUBSTRINGSUBSTRING_INDEX提取您的mp3文件的文件名,即在hotfiles网址中最后一次出现“/”后找到该字符串。

  2. 使用CONCAT将retreived文件名附加到新的url前缀并在数据库中更新。

  3. 以下是一个示例,您可以针对您的数据库进行适当的更改:

    mysql> select * from test_songs;
    +---------------------------------------------------------------+
    | song_url                                                      |
    +---------------------------------------------------------------+
    | http://hotfile.com/dl/157490069/c8732d4/mp3_file_name.mp3     |
    | http://www.hotfile.com/dl/123412312/dd732d4/mp3_song_name.mp3 |
    +---------------------------------------------------------------+
    

    采取子串:

    mysql> select SUBSTRING_INDEX(song_url,"/",-1) from test_songs;
    +----------------------------------+
    | SUBSTRING_INDEX(song_url,"/",-1) |
    +----------------------------------+
    | mp3_file_name.mp3                |
    | mp3_song_name.mp3                |
    +----------------------------------+
    2 rows in set (0.03 sec)
    

    创建最终更新查询:

    mysql> Update test_songs set song_url =
    CONCAT("http//p.music.cdndomain.com/vod/music.folder/2010/",
            SUBSTRING_INDEX(song_url,"/",-1)) ;
    Query OK, 2 rows affected (0.00 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
    

    检查结果:

    mysql> select * from test_songs;
    +---------------------------------------------------------------------+
    | song_url                                                            |
    +---------------------------------------------------------------------+
    | http//p.music.cdndomain.com/vod/music.folder/2010/mp3_file_name.mp3 |
    | http//p.music.cdndomain.com/vod/music.folder/2010/mp3_song_name.mp3 |
    +---------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    

    完成!