

下記は wp_posts テーブルの post_content カラム (type = LONGTEXT) のデータです。

**対象データ:**

[code]

    <h1 id="title1">h1</h2>
    
    
    <a href="#title1">aaa</a>
    <a href="#title2">bbb</a>
    <a href="#title3">ccc</a>
    <a href="#title4">ddd</a>
    <a href="#title5">eee</a>
    
    <h2 id="title2">h2</h2>
    
[/code]

`href="#title"` となっている `<a>` タグを全削除したいです。削除後に下記のようになっているのが理想です。

**削除後:**

[code]

    <h1 id="title1">h1</h2>
    
    <h2 id="title2">h2</h2>
    
[/code]

このようなSQLになると思うのですが、これに `href="#title"` となっている `<a>` タグという条件を加えたいです。  
MySQL 5.6を使っています。

[code]

    UPDATE
      wp_posts
    SET
      post_content = REPLACE(post_content, '<a href="#title1">aaa</a>', '') WHERE wp_posts.post_content LIKE '%<a href="#title1">aaa</a>%';
    
[/code]


CC BY-SA 4.0
2021-04-06T04:00:25.850
75113
2022-07-10T11:02:40.217
2021-04-06T10:04:28.880
19110
43875
question
mysql sql 正規表現
SQLの正規表現で文字列中の<a>タグを全削除したい


title の部分が任意の文字列という前提であれば、

[code]

    REGEXP_REPLACE(post_content, '<a href="#.*?">.*?</a>', '')
    
[/code]

という感じでしょうか。


CC BY-SA 4.0
2021-04-06T04:27:28.023
75114
2021-04-06T04:36:05.277
2021-04-06T04:36:05.277
7290
7290
75113
answer