Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 Regex神秘-你能帮我添加这些选项吗? 问题_Php_Regex_Preg Replace_Preg Match_Markdown - Fatal编程技术网

Php Regex神秘-你能帮我添加这些选项吗? 问题

Php Regex神秘-你能帮我添加这些选项吗? 问题,php,regex,preg-replace,preg-match,markdown,Php,Regex,Preg Replace,Preg Match,Markdown,下面我的正则表达式用于PHP preg_替换,效果非常好 '|(?<!</h2>)\s*\n(?!<h2>)|' “|(?)\s*\n(?!)|” 然而,我更希望“h2”部分是一个搜索任何“h2 | p | li | div”等的部分,只要它能从我给它的选择中找到什么 我试过像这样的各种方法 '|(?<!</(?:h2|p|li|div)>)\s*\n(?!<(?:h2|p|li|div)>)|' “|(?)\s*\n(?!)|

下面我的正则表达式用于PHP preg_替换,效果非常好

 '|(?<!</h2>)\s*\n(?!<h2>)|'
“|(?)\s*\n(?!)|”
然而,我更希望“h2”部分是一个搜索任何“h2 | p | li | div”等的部分,只要它能从我给它的选择中找到什么

我试过像这样的各种方法

'|(?<!</(?:h2|p|li|div)>)\s*\n(?!<(?:h2|p|li|div)>)|'
“|(?)\s*\n(?!)|”
但这似乎行不通

如果有人能为我指出正确的方向,这将是一个很大的帮助,因为我正在解决这个问题,以替代我昨天发布的问题

附加说明 我对代码BTW的目标是查找所有换行符(\n),这些换行符在换行符之前没有a/h2或p etc,换行符之后没有h2或p etc。所以

example\n                        <- find this
example\n                        <- find this
example\n                        <- not this (as <h2> next starts line)
<h2>example\n                    <- find this
example</h2>\n                   <- not this (as </h2> ends this line)
example\n                        <- find this
example\n我只想用这个:

~<(h2|p|li|div)([^\>]+)?>([^\<]+)?</(h2|p|li|div)>~

~]+)?>([^\n您是否解析.txt文件或其他文件?您尝试的第二个正则表达式将不起作用,因为您正在使用
字符作为delimeter,这在正则表达式中也意味着
。这将只适用于第一个正则表达式,因为您没有在模式中实际使用
。请替换第一个和最后一个
使用不同的delimeter(
~
可以)。我是regex新手,因此很抱歉没有识别出此错误。但不幸的是,现在新的错误消息是:“编译失败:lookback断言在偏移量22处不是固定长度”--lookbehind是否需要固定长度,这意味着我不能使用多个块类型?不要使用正则表达式来解析HTML。你无法用正则表达式可靠地解析HTML,你将面临悲伤和挫折。一旦HTML偏离你的预期,你的代码将被破坏。有关如何解析HTML的示例,请参阅使用已经编写、测试和调试的PHP模块正确解析HTML。