用于在特定标题下接受字符串的正则表达式(直到空白行)

时间:2014-09-19 05:27:48

标签: java regex

我有一个像这样的字符串

Heading_1:
   content1
   content2
   ...
   ...

Heading_2:
  content1
  content2
  ....

Heading_x:
  content1
  content2
  ....
  ...
  contentn

Heading_n:
  ........
  ........

我必须将headingx下的所有字符串(直到空行出现)作为content1的content1。 我试过这个

“(?(S)headingx: \ S ([^ \ n]的*))”

但它不起作用

1 个答案:

答案 0 :(得分:1)

你需要添加一个正向前瞻来检查字符串后跟一个空行。

(?s)Heading_[^:]*:[^\\n]*\\n(.*?)(?=\\n\\n)

DEMO

如果您还想要最后一个标题的内容(后面没有空白行),那么您需要在前瞻中添加$

(?s)Heading_[^:]*:[^\\n]*\\n(.*?)(?=\\n\\n|$)

DEMO

<强>解释

  • (?s) DOTALL modifer,它使点与新线符相匹配。
  • Heading_[^:]*:[^\\n]*\\n这只匹配包含换行符的标题行。
  • (.*?)(?=\\n\\n)跟踪任何字符,直到到达空白行。如果换行符后面紧跟另一个新行字符,那么它必须是一个空行。