我需要解析大量字符串。这些字符串包含放置在键值对中的信息
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore 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]*)\: (.*?)\.
。可以说它没有提供预期的输出
这个正则表达式
([^:.]+):\s*([^:]+)(?=\.\s+|$)
执行此任务Demo & explanation
为了好玩,这里有一个python的非正则解决方案:
输出是从键开始的两个文本块
您可以匹配以下正则表达式,它保存键和值以捕获组1和2
Start your engine!Python code
Python的正则表达式引擎执行以下操作
这使用了tempered greedy token技术,它匹配一系列不以不需要的字符串开头的单个字符。例如,如果字符串是
"concatenate"
,(?:(?:!cat).)+
将匹配前三个字母,但不匹配第二个'c'
,因此匹配将是'con'
相关问题 更多 >
编程相关推荐