正则表达式中java的键值

时间:2013-03-28 10:06:35

标签: java regex

我正在尝试在java中为这个字符串创建一个regExp:

key:value
key:"value" 
key:'value' 
key : value  
key :"value 123" 
key: 'value 123'

每个条件都可以在一行中:

key:value key : value key : "value 123"

我要匹配每一个,捕获键和值,修剪和不带引号。

遗憾的是,java不支持正则表达式中的条件。

有人可以帮助我吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

此模式应满足这些要求:

(\w+)( *):( *)(\w+|(["'])([\w\s]+)\5)

答案 1 :(得分:1)

这应该符合您的需求(demo):

(\w+)\s*:\s*((?:.(?!\w+\s*(?<!\\):))*)

第一组包含密钥,第二组包含值。

我添加了一种方法来管理值中的嵌套::只需使用\转义它们。

你仍然需要修剪结果。

答案 2 :(得分:0)

您可以使用以下正则表达式:

/(\w+)\s*:\s*(((['"]).+?\4)|\w+)/

组#1将成为你的关键,组#2将是价值。

现场演示:http://www.rubular.com/r/IPqtdneBeW