我正在尝试制作正则表达式(用于C ++ 2011 std::regex
,EMCAScript模式)来解析此内容:
1
Second Line of Data for this entry
Here is the content
2
Second Line of Data for this entry
Here is the content that can be multiline
It is multiline for entry two
3
Second Line of Data for this entry
More content
注意这里的'2'条目 - 它的内容带有回车符(\ n)到下一行,但是双\n\n
将它与下一个条目分开。
我试过这个正则表达式:
(\\d)\n(.*)\n(.*)\n\n
但它并没有像我期望的那样使用clang 3.3。
答案 0 :(得分:2)
注释
white-space
3
.
(点)匹配的内容,在这种情况下,我们使用[\s\S]
来绕过不匹配的换行符。处理额外空白行和换行符的RegEx如下:
(\d+)\s*\r?\n(.*?)\r?\n([\s\S]*?)(?:\r?\n\r?\n|$)
"(\\d+)\\s*\\r?\\n(.*?)\\r?\\n([\\s\\S]*?)(?:\\r?\\n\\r?\\n|$)"
如果你知道你总是会有LF行结尾的输入,那就更简单了:
(\d+)\s*\n(.*?)\n([\s\S]*?)(?:\n\n|$)
(\\d+)\\s*\\n(.*?)\\n([\\s\\S]*?)(?:\\n\\n|$)