【问题标题】:MySQL regex replace?MySQL正则表达式替换?
【发布时间】:2011-03-10 20:05:22
【问题描述】:

我有一个带有 blob 文本字段的表格。这个 blob 中有很多 html。其中一个 html 是 h2。我想在 h2 标签中找到一个单词的所有实例,并将其替换为另一个单词(同时保持其他单词相同)。

例如,我想将下面的 h2 “wiggles”替换为“bumbles”:

之前:

<h2>This is some wiggles html!</h2>
<p>And here is some more wiggles html that could be ignored</p>
<h2>And this is a decoy h2</h2>

之后:

<h2>This is some bumbles html!</h2>
<p>And here is some more wiggles html that could be ignored</p>
<h2>And this is a decoy h2</h2>

我担心的一个陷阱是正则表达式不会在第一个 h2 结束时停止,而是一直持续到它的最后一个结束。

我可以访问 shell 和 phpmyadmin。

【问题讨论】:

  • 只想为笨拙和摆动而 +1 是错误的吗?
  • 哈哈,我不会抱怨的:)。一定要让事情变得有趣;)

标签: php mysql replace phpmyadmin


【解决方案1】:

用正则表达式替换 MySQL 中的文本

您可以向 MySQL 添加一个库来获得此功能。

添加:LIB_MYSQLUDF_PREG
允许:使用 PCRE 进行正则表达式搜索和替换。
网站:http://www.mysqludf.org/lib_mysqludf_preg/

示例:

SELECT PREG_REPLACE('/(.*?)(fox)/' , 'dog' , 'the quick brown fox' );

产量:

the quick brown 

用正则表达式匹配 HTML

用正则表达式解析 HTML 并不容易,而且有很多陷阱。但是,您的示例很简单,您应该能够做您想做的事情。

我认为这会有所帮助:http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx

【讨论】:

    【解决方案2】:

    Html 不是常规语言,因此尝试使用正则表达式对其进行解析不是最佳选择。在我看来,我想利用 html 解析器来完成这项工作。 Here is a sample parser.

    享受吧!

    【讨论】:

      【解决方案3】:

      mySQL 中没有正则表达式替换功能:regex functions 仅匹配。

      似乎有一个user defined function 以某种方式添加了该功能,但它需要重新编译 mySQL 并且可能不是一个选项。

      我建议使用 PHP 之类的编程/脚本语言执行此操作,使用其内置的正则表达式替换函数来更改内容并更新记录。

      编辑:忽略了php标签。

      【讨论】:

      • 是的,Oracle 和 PostgreSQL 是我所知道的唯一具有本地正则表达式替换功能的数据库。 SQL Server 2005+,你必须通过 CLR 函数自己构建它...
      猜你喜欢
      • 1970-01-01
      • 2011-03-29
      • 2012-12-07
      • 1970-01-01
      • 2012-10-15
      • 2019-01-24
      • 2015-01-24
      • 1970-01-01
      相关资源
      最近更新 更多