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多次