我有一个像这样的字符串
Heading_1: content1 content2 ... ... Heading_2: content1 content2 .... Heading_x: content1 content2 .... ... contentn Heading_n: ........ ........
我必须将headingx下的所有字符串(直到空行出现)作为content1的content1。 我试过这个
“(?(S)headingx: \ S ([^ \ n]的*))”
但它不起作用
答案 0 :(得分:1)
你需要添加一个正向前瞻来检查字符串后跟一个空行。
(?s)Heading_[^:]*:[^\\n]*\\n(.*?)(?=\\n\\n)
如果您还想要最后一个标题的内容(后面没有空白行),那么您需要在前瞻中添加$
。
(?s)Heading_[^:]*:[^\\n]*\\n(.*?)(?=\\n\\n|$)
<强>解释强>
(?s)
DOTALL modifer,它使点与新线符相匹配。Heading_[^:]*:[^\\n]*\\n
这只匹配包含换行符的标题行。(.*?)(?=\\n\\n)
跟踪任何字符,直到到达空白行。如果换行符后面紧跟另一个新行字符,那么它必须是一个空行。