正则表达式在一行MySQL上的单个字段中查找重复的文本实例

时间:2015-08-21 16:35:12

标签: mysql regex vb.net

关于如何查找重复行有几个问题,但这不是我需要的。

我有一个产品数据库,其中包含一个字段description,其中包含该项目的编码HTML描述。

此内容由后端系统生成,该系统使用TinyMCE创建HTML描述。

用户有时会输入我想要找到的几个H标签实例。

所以我正在寻找任何包含以下内容的描述:

  • 多个H1标签
  • 多个H2标签
  • 多个H3标签

此正则表达式\b(\w+)\b(?=.*\b\1\b)/g在字符串中找到重复的单词,但我不确定如何使用它来查找特定的单词。

所以,如果我数据库中任何一行的描述字段如下所示:

  <h1>this is a header</h1> 
  Here is some text about stuff
  <h1>here is another header</h1>

我怎么找到它?

SELECT * FROM products WHERE description *CONTAINS <h1> AND </h1> TWICE*

2 个答案:

答案 0 :(得分:0)

我没有要测试的MySQL实例,这对我来说可能是天真的,但我认为你可以使用两个值的简单通配符测试来做到这一点。正则表达式会更复杂,但是通配符会更便携,对于除了你以外的其他人更容易理解,并且基于正则表达式如何工作,可能更快(你需要测试它)。

SELECT 
   * 
FROM 
   products 
WHERE 
   description LIKE '%<h1>%<h1>%' OR
   description LIKE '%<h2>%h2>%' OR
   description LIKE '%<h3>%<h3>%'

我没有机会对此进行测试,但它对我的本地CMS有效(尽管没有在MySQL上运行)。

答案 1 :(得分:0)

试试这个

SELECT * FROM products WHERE description REGEXP '(h1+|h2+|h3+)'

h1 +,表示1个或更多匹配,以及|匹配序列h1,h2或h3

中的任何一个