我想从一个字符串中提取一些字符串,其中KEYs与VALUE分开,冒号(:)和s由逗号(,)分隔.问题是VALUE可以包含逗号.
举个例子:
category:information technology, computer,publisher:Elsevier (EV),subject:Ecology, Evolution, Behavior and Systematics
在此示例中,必须提取的KEY包括:类别,发布者和主题.
最终结果必须如下:
category = information technology, computer
publisher = Elsevier (EV)
subject = Ecology, Evolution, Behavior and Systematics
我试着写一个递归的正则表达式,但它不起作用:
(category|publisher|subject):(.*?)(?:,(?R)|.?)
有人可以帮助解决这个问题.谢谢.
解决方法:
好吧,如果你可以在字符串的末尾添加一个逗号,我认为这有效:
(\w+):([^:]+),
编辑:
乔纳森库恩是完全正确的:
(\w+):([^:]+)(?:,|$)
这有效
标签:php,regex
来源: https://codeday.me/bug/20190608/1201339.html