正则表达式 – 用于解析名称值对的正则表达式

有人可以提供一个正则表达式来解析字符串中的名称/值对吗?这些对由逗号分隔,该值可以可选地用引号括起来。例如:

AssemblyName=foo.dll,ClassName="SomeClass",Parameters="Some,Parameters"
最佳答案
>不逃避:

/([^=,]*)=("[^"]*"|[^,"]*)/

>键和值的双引号转义:

/((?:"[^"]*"|[^=,])*)=((?:"[^"]*"|[^=,])*)/

key=value,"key with "" in it"="value with "" in it",key=value" "with" "spaces

>反斜杠字符串转义:

/([^=,]*)=("(?:\\.|[^"\\]+)*"|[^,"]*)/

key=value,key="value",key="val\"ue"

>全反斜杠逃脱:

/((?:\\.|[^=,]+)*)=("(?:\\.|[^"\\]+)*"|(?:\\.|[^,"\\]+)*)/

key=value,key="value",key="val\"ue",ke\,y=val\,ue

编辑:添加转义替代方法。

Edit2:添加了另一个转义替代方法。

您必须通过删除任何转义字符和周围的引号来清除键/值。

转载注明原文:正则表达式 – 用于解析名称值对的正则表达式 - 代码日志