如何从java中的字符串创建键/值映射

时间:2012-07-13 18:05:38

标签: java regex string-matching

我有一个像

这样的文字

"SimpleKey1:word1. SimpleKey2: word word word, word word. word word. CompoundKey3 / CompoundKey3: word word word, word. Key3: word. SimpleKey4: word words, words word-word (word 18 word 100 ). CompoundKey4 / CompoundKey4: word word."

我需要解析该字符串以获取键/值映射,如:

SimpleKey1:word1. 
SimpleKey2: word word word, word word. word word. 
CompoundKey3 / CompoundKey3: word word word, word. 
SimpleKey4: word words, words word-word (word 18 word 100 ).  
CompoundKey4 / CompoundKey4: word word.

请注意,键可以包含斜杠字符(/),值可以包含特殊字符。

有没有正则表达式呢? 感谢。

1 个答案:

答案 0 :(得分:1)

键匹配\w+ *(?:/ *\w+)*,因此值是:之后的所有内容,直到下一个键或字符串结尾,因此:

(\w+ *(?:/ *\w+)*):(.*?)(?=\w+ *(?:/ *\w+)*:|$)

键是组1,值是组2(可能有尾随空格)。