Splitting the string in key=value groups using Regex (Java) -


i not big expert in regexp, that's why ask suggest efficient way of splitting string in key=value groups.

the input string:

x-x="11111" y-y="john-doe 23" db {rty='y453'} code {codedate='2000-03-01t00:00:00'} 

what need key=value pairs:

key=x-x, value="11111" key=y-y, value="john-doe 23" key=rty, value='y453' key=codedate, value='2000-03-01t00:00:00' 

my solution here fear it's not simplest one.

string str = "x-x=\"11111\" y-y=\"john-doe 23\" db {rty='y453'} code {codedate='2000-03-01t00:00:00'}"; matcher m = pattern.compile("(\\w+-*\\w*)=((\"|')(\\w+( |-|:)*)+(\"|'))").matcher(str);  while(m.find()) {     string key = m.group(1);     string value = m.group(2);     system.out.printf("key=%s, value=%s\n", key, value); } 

thanks in advance help.

you can use regex 3 capturing groups , back-reference:

([\w-]+)=((['"]).*?\3) 

regex demo

regex breakup: 
  • ([\w-]+): match , capture key name in group #1
  • =: match =
  • (: start group #2
    • (['"]): match , capture quote in group #3
    • .*?: match 0 or more of character (lazy match)
    • \3: back-reference group #3 match closing quote of same type
  • ): end of capture group #2

you matches in .group(1) , .group(2).


Comments

Popular posts from this blog

node.js - Node js - Trying to send POST request, but it is not loading javascript content -

javascript - Replicate keyboard event with html button -

javascript - Web audio api 5.1 surround example not working in firefox -