【发布时间】:2020-07-10 16:29:41
【问题描述】:
我有大量的字符串需要解析。这些字符串包含放在键值对中的信息。
输入文本示例:
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illoinvente veritatis et quasi architecto beatae vitae dicta sunt explicabo。 Nemo enim: ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt。 Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem。 Ut enim: ad minima veniam, *31.12.2012, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil Molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur
关键信息:
- 键从字符串的开头或
\.之后开始 - 密钥总是以
:结尾 - 键后紧跟一个值
- 此值一直持续到下一个键或字符串中的最后一个符号
- 有多个键值对,我不知道
预期输出
{
"Nemo enim": "ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem",
"Ut enim": "ad minima veniam, *31.12.2012, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur"
}
我目前的正则表达式是([üöä\w\s]*)\: (.*?)\.。可以说它没有提供预期的输出。
【问题讨论】:
-
key 总是两个字吗?
-
不,遗憾的是,键可以是 1 到 n 个单词之间的任何内容
-
:是否出现在文本中除键之外的任何位置? -
键可以包含前导空格字符吗?
-
until the last symbol in the string:symbol的定义是什么?