【发布时间】:2017-12-06 08:43:09
【问题描述】:
我正在使用查询从包含文本的列中提取用户 ID。这适用于我正在使用的论坛系统,并希望从包含完整消息的文本字段中获取用户 ID 部分。我正在使用的查询是
SELECT REGEXP_SUBSTR(message, '(?:member: )(\d+)'
) AS user_id
from posts
where message like '%quote%';
现在忽略丑陋的 SQL 而不是最终的事实,我只需要到达它读取用户 ID 的地方。以下是您将在消息列中看到的文本示例
`QUOTE="Moony, post: 967760, member: 22665"]I'm underwhelmed...[/QUOTE]
Hopefully we aren’t done yet and this is nothing but a depth signing!`
在 mariadb REGEXP_SUBST 中使用的正则表达式有什么不同吗?这应该是 PCRE 并且在正则表达式测试器中工作并且应该正确读取。它应该寻找组“成员:”,然后获取之后的数字,并在所有这些帖子上进行一次匹配。
【问题讨论】:
-
我不明白你为什么将字符串
member:分组,因为它可能是非捕获的。 -
看来你想要
'(?<=member: )\d+' -
@WiktorStribiżew
(?<=member: )\d+提供相同的结果,即为空。如果我在regex101.com 上测试你的正则表达式和我的正则表达式,但一旦它在 SQL 查询中就不行 -
@DanFarrell 我正在对其进行分组,因为这似乎是识别该组数字的最合乎逻辑的搜索分组,因为我不能依赖位置是否一致