Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
708 views
in Technique[技术] by (71.8m points)

regex - Regular expression for parsing name value pairs

Can someone provide a regular expression for parsing name/value pairs from a string? The pairs are separated by commas, and the value can optionally be enclosed in quotes. For example:

AssemblyName=foo.dll,ClassName="SomeClass",Parameters="Some,Parameters"
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
  • No escape:

    /([^=,]*)=("[^"]*"|[^,"]*)/
    
  • Double quote escape for both key and value:

    /((?:"[^"]*"|[^=,])*)=((?:"[^"]*"|[^=,])*)/
    
    key=value,"key with "" in it"="value with "" in it",key=value" "with" "spaces
    
  • Backslash string escape:

    /([^=,]*)=("(?:\.|[^"\]+)*"|[^,"]*)/
    
    key=value,key="value",key="val"ue"
    
  • Full backslash escape:

    /((?:\.|[^=,]+)*)=("(?:\.|[^"\]+)*"|(?:\.|[^,"\]+)*)/
    
    key=value,key="value",key="val"ue",ke,y=val,ue
    

Edit: Added escaping alternatives.

Edit2: Added another escaping alternative.

You would have to clean up the keys/values by removing any escape-characters and surrounding quotes.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...