Regex 倒逗号前数字的正则表达式子字符串
嗨,我正在尝试使用PostgreSQL提取“字符”前面的所有数字(包括小数) 我不确定如何指定它,因为我的正则表达式包含在这些字符之间。见: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
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