首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式在“标记”中提取MySQL数据?

使用正则表达式在“标记”中提取MySQL数据?
EN

Stack Overflow用户
提问于 2011-05-20 11:05:48
回答 2查看 501关注 0票数 0

可能重复: 在mysql中模拟regex捕获组

日安,

我在MySQL表中存储了许多行数据。一个典型的值可能如下所示:

代码语言:javascript
复制
::image-gallery::
::gallery-entry::images/01.jpg::/gallery-entry::
::/image-gallery::

是否有一种方法--通过一个正则表达式(我可以a)从第一行(可以是任何短语,而不仅仅是图像库)提取映像库一词,然后将中线提取为两个单独的值,如下所示:

图库-条目,然后是图像/01.jpg

可以有许多行::图库条目::值,它们也可以被称为任何东西。一个更完整的例子是:

代码语言:javascript
复制
::image-gallery::
::title::MY GALLERY::/title::
::date::2011-05-20::/date::
::gallery-entry::images/01.jpg::/gallery-entry::
::/image-gallery::

本质上,我想要这个信息:内容类型(图片库)在上述情况下,第一行和最后一行。然后我需要标题作为键值样式对,所以 title 作为键,我的图库作为值。然后,随后,我将需要所有字段行(图库-条目)作为键值对。

这是用于迁移脚本,其中来自旧系统的数据将被迁移到具有不同语法的新系统中。

如果PHP语句不能工作,那么用MySQL脚本解析结果以进行数据提取会更容易吗?

任何和所有的帮助都是值得感激的。

你好,西蒙

EN

回答 2

Stack Overflow用户

发布于 2011-07-30 04:35:21

试试这个正则表达式:

代码语言:javascript
复制
::image-gallery::\s+::title::(.*?)::/title::.*?::gallery-entry::(.*?)::/gallery-entry::\s+::/image-gallery::
  1. 使用单行模式(/pattern/s),所以.*?撕碎新台词。
  2. 您的键值对将是:标题:$1 (匹配组1)图库-条目:$2 (匹配组2)
票数 0
EN

Stack Overflow用户

发布于 2011-07-30 15:06:07

模拟-regex-捕获-组-在mysql中中,似乎没有一种方法可以轻松地用mysql中的regex捕获组。原因是MySQL本机不支持正则表达式中的捕获组。如果需要该功能,可以使用服务器端扩展(如预浸 )将该功能添加到MySQL中。

最简单的方法是使用SQL提取整个列,然后用另一种语言(例如php)进行文本匹配。

在我的测试中,肯布里顿的regex没有工作,但是在此基础上,下面的regex对您的测试数据起了作用:

代码语言:javascript
复制
::image-gallery::\s+::title::(.*?)::\/title::\s+(?:.*\s+)*::gallery-entry::(.*?)::\/gallery-entry::\s+::\/image-gallery::
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6071008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档