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 捕获多个正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章