Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 倒逗号前数字的正则表达式子字符串_Regex_Postgresql - Fatal编程技术网

Regex 倒逗号前数字的正则表达式子字符串

Regex 倒逗号前数字的正则表达式子字符串,regex,postgresql,Regex,Postgresql,嗨,我正在尝试使用PostgreSQL提取“字符”前面的所有数字(包括小数) 我不确定如何指定它,因为我的正则表达式包含在这些字符之间。见: SUBSTRING(long_text, '[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)(?=')') as substring_feet 这将导致以下错误: syntax error at or near "') as substring_feet --,SUBSTRING(long_text, (po

嗨,我正在尝试使用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...
                                                         ^
我试过各种各样的逃跑方法,但都不明白


使用联机测试仪是因为这不考虑我的查询所需的引号。

要提取所有引用,您可以使用带有
g
标志的
regex\u matches
函数,但您还必须确保模式中没有捕获组,将它们替换为捕获组(即
(?:…)
)。要使用单引号,请将其加倍(这是常识)

使用类似

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

请参阅。

在您的联机示例中,输入文本为“大约3”,而在我需要搜索的所有文本字段中,文本为大约5”。大约2英尺。高度为3’。等等(也就是说,倒逗号只用一次)@Beeman这是倒逗号吗?你为什么不在问题的例子中使用它?然后使用“对不起,我把术语弄错了:不是倒逗号,而是一个单引号”,如示例中所述。@Beeman那么我的答案应该对您有用。请考虑接受.H.,没有这个例子不起作用,因为在我的例子中,Lang-Type字段是指一个表中包含一个文本的长列的一个列。请参阅原始问题中的在线示例。您需要在oracle本身中转义“'”。“''”(2…上冒号)逃脱了它。
SELECT regexp_matches(long_text, '([+-]?(?:[0-9]+(?:[.][0-9]*)?|[.][0-9]+))’', 'g') as substring_feet