将多行分隔符与C ++ 2011正则表达式匹配的问题(ECMAScript)

时间:2014-02-20 00:46:19

标签: c++ regex

我正在尝试制作正则表达式(用于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。

1 个答案:

答案 0 :(得分:2)

注释

  • 您的示例数据似乎在数字white-space
  • 之后有3
  • 目前尚不清楚您是否需要CRLF或只需要LF来换行。
  • 在最后一次输入后注意字符,任何额外的空格都可能导致正则表达式无法与最后一项匹配。
  • 您必须注意.(点)匹配的内容,在这种情况下,我们使用[\s\S]来绕过不匹配的换行符。

处理额外空白行和换行符的RegEx如下:

  • 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|$)" Regular expression visualization

如果你知道你总是会有LF行结尾的输入,那就更简单了:

  • RegEx (\d+)\s*\n(.*?)\n([\s\S]*?)(?:\n\n|$)
  • 转发(\\d+)\\s*\\n(.*?)\\n([\\s\\S]*?)(?:\\n\\n|$) Regular expression visualization