我正在尝试在java中为这个字符串创建一个regExp:
key:value
key:"value"
key:'value'
key : value
key :"value 123"
key: 'value 123'
每个条件都可以在一行中:
key:value key : value key : "value 123"
我要匹配每一个,捕获键和值,修剪和不带引号。
遗憾的是,java不支持正则表达式中的条件。
有人可以帮助我吗?
提前致谢。
答案 0 :(得分:1)
此模式应满足这些要求:
(\w+)( *):( *)(\w+|(["'])([\w\s]+)\5)
答案 1 :(得分:1)
这应该符合您的需求(demo):
(\w+)\s*:\s*((?:.(?!\w+\s*(?<!\\):))*)
第一组包含密钥,第二组包含值。
我添加了一种方法来管理值中的嵌套:
:只需使用\
转义它们。
你仍然需要修剪结果。
答案 2 :(得分:0)
您可以使用以下正则表达式:
/(\w+)\s*:\s*(((['"]).+?\4)|\w+)/
组#1将成为你的关键,组#2将是价值。