PHP正则表达式提取键值逗号分隔

时间:2016-02-19 00:13:00

标签: php regex

我想从一个字符串中提取一些字符串,其中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

有人可以帮助解决这个问题。感谢。

1 个答案:

答案 0 :(得分:5)

好吧,如果您可以在字符串的末尾添加逗号,我认为这样可行:

(\w+):([^:]+),

编辑:

Jonathan Kuhn是完全正确的:

(\w+):([^:]+)(?:,|$)

这有效