我想从一个字符串中提取一些字符串,其中KEYs与VALUE分开,冒号(:)和s由逗号(,)分隔。问题是VALUE可以包含逗号。 举个例子:
select q.timestamp, q.symbol, t.price, q.bid, q.offer
from trades t
inner join quotes q
on t.timestamp = q.timestamp and t.symbol = q.symbol
where ROW_NUMBER() OVER(PARTITION BY q.timestamp, q.symbol ORDER BY q.timestamp DESC) = 1
在此示例中,必须提取的KEY包括:category,publisher和subject。 最终结果必须如下:
category:information technology, computer,publisher:Elsevier (EV),subject:Ecology, Evolution, Behavior and Systematics
我尝试编写递归正则表达式,但它不起作用:
category = information technology, computer
publisher = Elsevier (EV)
subject = Ecology, Evolution, Behavior and Systematics
有人可以帮助解决这个问题。感谢。
答案 0 :(得分:5)
好吧,如果您可以在字符串的末尾添加逗号,我认为这样可行:
(\w+):([^:]+),
编辑:
Jonathan Kuhn是完全正确的:
(\w+):([^:]+)(?:,|$)
这有效