Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
PHP正则表达式匹配段落分隔符_Php_Regex - Fatal编程技术网

PHP正则表达式匹配段落分隔符

PHP正则表达式匹配段落分隔符,php,regex,Php,Regex,我有以下案文: This is some test I want to keep\n \n **Header**  \n Some test text \n Another test  \n Something else  \n \n - bullet point i want to keep - this bulleted list could be another paragraph or header, etc. 我想做的是想出一个正则表达式来匹配 **Header**  \n So

我有以下案文:

This is some test I want to keep\n
\n
**Header**  \n
Some test text \n
Another test  \n
Something else  \n
\n
 - bullet point i want to keep
 - this bulleted list could be another paragraph or header, etc.
我想做的是想出一个正则表达式来匹配

**Header**  \n
Some test text \n
Another test  \n
Something else  \n
\n
…这样我就可以去掉那部分内容了。我可以通过标题文本安全地识别这一点,在本例中是
标题
,但我不能假设结尾是一个项目符号列表,它可以是任何内容,因此我计划以两行换行来结束匹配

我一直在试图找到一个可以满足我需要的正则表达式,
\*\*Header\*\*(?:.+?)(?:\r*\n){2,}
似乎可以,但我无法匹配它-请参阅


感觉我错过了一些愚蠢的事情,有人能帮我吗?

文本中有
\n
而不是换行符。但是,您尝试的模式只有在文本以2个换行符结尾时才匹配。当文本在
其他内容之后结束时,它将显示

不需要使用
s
修改器使点与换行符匹配。相反,您可以匹配所有行,这些行断言在行的开头,后面的不是换行符

如果只想匹配标题部分,可以使用

\*\*Header\*\*.*(?:\r?\n(?!\r?\n).*)*
解释

  • \*\*标题\*\*
    匹配
    **标题**
  • *
    匹配除换行符以外的任何字符0+次
  • (?:
    非捕获组
    • \r?\n
      匹配换行符
    • (?!\r?\n)。*
      断言直接右边的不是另一个换行符。然后匹配整行
  • )*
    关闭组并重复0多次