preg_capture 捕获多个正则表达式匹配

Posted

技术标签:

【中文标题】preg_capture 捕获多个正则表达式匹配【英文标题】:preg_capture catch multiple regexp matches 【发布时间】:2013-02-21 20:50:43 【问题描述】:

UDF函数PREG_CAPTURE有点问题:

SELECT id_prod, id_lang, description, preg_capture('/D[[:digit:]]4/', description) AS Dxxxx FROM works

通过这个查询我得到了[BLOB - 5 B]

但是当我在查询中使用参数时:

SELECT id_prod, id_lang, description, preg_capture('/D[[:digit:]]4/', description, 2) AS Dxxxx FROM 

我得到了 NULL 值。 Here is example of my table 如何从描述中获取所有匹配项,如:D0313、D0320 并通过 BLOB?

【问题讨论】:

preg_capture()的定义是什么? @Barmar mysqludf.org/lib_mysqludf_preg/index.php 您的正则表达式没有任何捕获组。当您要求第 2 组时,为什么希望它返回一些东西? 我忘记了:当我查询时:SELECT id_prod, id_lang, description, preg_capture('/D[[:digit:]]4/', description, 'gname', 2) AS Dxxxx FROM... 也有 NULL 值。 没有名为 gname 的捕获组。你知道什么是捕获组吗? 【参考方案1】:

尝试转换为 char:

SELECT id_prod, id_lang, description, CAST(preg_capture('/D[[:digit:]]4/', description)  AS CHAR(10000)) AS Dxxxx FROM works;

【讨论】:

以上是关于preg_capture 捕获多个正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章

具有多个捕获组的 R 中的正则表达式组捕获

为啥这个正则表达式需要一个捕获组来匹配?

正则表达式入门环视

js正则表达式 匹配两个特定字符间的内容

在 PySpark 中提取多个正则表达式匹配项

Django中常用的正则表达式