Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 在使用全局选项(/g)时,如何使用正则表达式匹配空行?_Regex - Fatal编程技术网

Regex 在使用全局选项(/g)时,如何使用正则表达式匹配空行?

Regex 在使用全局选项(/g)时,如何使用正则表达式匹配空行?,regex,Regex,我知道这个一般性的问题肯定被问过很多次,但在尝试建议的解决方案时,我一无所获。我想匹配一个不带“>的新行字符,或者一个单独的新行字符,但是我似乎找不到任何常用的建议来匹配一个空行 示例(pcre): /([^>])\n | ^\n)/$2\n/g 在: 你好,世界! 文本 生成的输出: Hello World!<br> <tag> text<br> 你好,世界 文本 超出预期: Hello World!<br> <br> &l

我知道这个一般性的问题肯定被问过很多次,但在尝试建议的解决方案时,我一无所获。我想匹配一个不带“>的新行字符,或者一个单独的新行字符,但是我似乎找不到任何常用的建议来匹配一个空行

示例(pcre):

/([^>])\n | ^\n)/$2
\n/g
在:

你好,世界!
文本
生成的输出:

Hello World!<br>

<tag>
text<br>
你好,世界
文本
超出预期:

Hello World!<br>
<br>
<tag>
text<br>
你好,世界

文本
此处可编辑:


我相信我遗漏了一些基本的东西,了解这些知识可能会让我更新问题标题,使之更具体,对其他人更有帮助。

您的正则表达式是正确的,但您的选项是错误的。您只需启用“多行”选项,使“^”匹配行的开头,而不是文档的开头。您现在启用了“/g”全局选项,这是正确的。您还需要添加“/m”(因此它最终是“/gm”)。

由于您的正则表达式风格是PCRE(PHP),因此您也可以使用负查找:

搜索正则表达式:

(?<!>)\n
(?)\n
并替换为使用:

<br>\n

\n


这里的
(?)
是一种负回溯,只有在
\n

前面没有
字符时才断言为真(替换为
$1
\n
)?如果末尾有两个空行怎么办?预期的行为是什么?如果你的正则表达式风格支持lookbehing,那么顺便说一句,什么是正则表达式风格?如果是PCRE,那么我建议的lookbehing解决方案也应该适合你。@anubhava谢谢,你是对的,确实如此。啊,这解释了为什么我一直在努力匹配字符串的开头和结尾,非常感谢。一旦我被允许,我会改进标题并给你答案。
(?<!>)\n
<br>\n