Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于在两个正则表达式模式之间匹配文本的正则表达式_Regex_Regex Negation_Regex Lookarounds_Regex Group - Fatal编程技术网

Regex 用于在两个正则表达式模式之间匹配文本的正则表达式

Regex 用于在两个正则表达式模式之间匹配文本的正则表达式,regex,regex-negation,regex-lookarounds,regex-group,Regex,Regex Negation,Regex Lookarounds,Regex Group,我正在寻找一种从文本文档中捕获文本及其段落标题的方法 文本文件: paraTitle-1 -------- Lines and words empty.... more lines still part of paraTitle-1 paraTitle-2 -------- Lines and words empty.... more lines still part of paraTitle-2 我想捕获标题和下面的文本 array = [paraTitle-1: <t

我正在寻找一种从文本文档中捕获文本及其段落标题的方法

文本文件:

paraTitle-1
--------
Lines and words
empty....
more lines



still part of paraTitle-1

paraTitle-2
--------
Lines and words
empty....
more lines



still part of paraTitle-2
我想捕获标题和下面的文本

 array = [paraTitle-1: <text...below paraTitle-11>,
          paraTitle-2: <text below paraTitle-2>]

我尝试了几次pattern?下面的正则表达式可以:

----\R.*\R----\R?:\R*\R---\R*+

标题分隔线----也可以指定为-{8},如果需要,可以更容易地调整为可变长度,例如,它可以是6或更多,而不是8个破折号:-{6,}

说明:

捕获一行文本段落标题:

(.*)\R
这个不匹配换行符 \R匹配换行符,包括Windows CRLF对。如果您的正则表达式引擎不支持\R\n,请使用\R?\n作为简单的替代方法。 确保捕获的文本不是标题分隔符行:

(?!--------\R)
--------\R
跳过必需的标题分隔符行:

(?!--------\R)
--------\R
将段落文本捕获为一组重复的行:

((?:xxx)+)
一条线有一个可选的前导线打断。第一条线没有:

\R?.*
但要确保这一行不是下一段的标题,也就是说,它不是紧跟标题分隔线的一行

(?!.*\R--------\R)

所有段落的格式是否相同?i、 e:标题-?是的。所有段落的标题后面都有一个换行符\n,至少有6个-后面有另一个换行符\n,然后是段落文本。请重试。如果行尾为\n,请使用?*\n-{5,}\n?[\s\s]*??=\n.*\n-{5,}\n |$。您不必使用命名组,但是如果您需要这样的数组,您的语言似乎支持它们。我不知道如何处理文本正文中的潜在字符