gpt4 book ai didi

引号前数字的正则表达式子串

转载 作者:行者123 更新时间:2023-11-29 13:15:28 25 4
gpt4 key购买 nike

您好,我正在尝试使用 PostgreSQL 提取 ' 字符之前的所有数字(包括小数)。

我不确定如何指定它,因为我的正则表达式包含在这些字符本身之间。见:

SUBSTRING(long_text, '[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)(?=')') as substring_feet

这会导致以下错误:

syntax error at or near "') as substring_feet
--,SUBSTRING(long_text, (position((substring(long_text FROM '"
LINE 6: ...ng_text, '[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)(?=')') as subs...
^

我已经尝试了各种转义等,但无法弄清楚。

expression passes ok使用在线测试器,因为这没有考虑我的查询所需的报价。

最佳答案

要提取所有事件,您可以使用带有 g 标志的 regex_matches 函数,但您还必须确保模式中没有捕获组,将它们替换为 non-capturing那些(即 (?:...))。要使用单引号,请将其加倍(这是常识)。

使用类似的东西

SELECT regexp_matches(long_text, '[+-]?(?:[0-9]+(?:[.][0-9]*)?|[.][0-9]+)(?='')', 'g') as substring_feet

请注意,如果用捕获 组(即(...))包装要提取的部分,您可能会摆脱前瞻:

SELECT regexp_matches(long_text, '([+-]?(?:[0-9]+(?:[.][0-9]*)?|[.][0-9]+))''', 'g') as substring_feet

看到一个 online demo

如果你真的有一个倒逗号,使用

SELECT regexp_matches(long_text, '([+-]?(?:[0-9]+(?:[.][0-9]*)?|[.][0-9]+))’', 'g') as substring_feet

参见 another online demo

关于引号前数字的正则表达式子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49814289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com