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