Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 a WORD --- Match <TAG><TAG2>xxx</TAG2></TAG> --- Not a match <TAG>xxxxxxx<TAG2>yyyy</TAG2>xxxxxxx</TAG> --- Not a match 这是一个单词--Match 不是一对 XXXXXXX YYYYXXXXXX---不匹配 我使用的是P

只有当它不在
内时,我才尝试匹配
'

例如:

This is a WORD --- Match
<TAG><TAG2>xxx</TAG2></TAG> --- Not a match
<TAG>xxxxxxx<TAG2>yyyy</TAG2>xxxxxxx</TAG>  --- Not a match
这是一个单词--Match
不是一对
XXXXXXX YYYYXXXXXX---不匹配
我使用的是PHP,所以我不能在后面做可变长度的负片

我尝试在中使用正则表达式,但如果有多个标记,这在我的情况下不起作用

<TAG><TAG2>xxx</TAG2></TAG>
<TAG><TAG2>xxx</TAG2></TAG>  - This will match from the first <TAG2> to  the end of the second </TAG2>.  I'm assuming this is because my regex includes <TAG2>[\s\S]*</TAG2>
xxx
xxx-这将从第一个匹配到第二个匹配的结尾。我假设这是因为我的正则表达式包含[\s\s]*
前言 我建议为此使用解析引擎,不过听起来您可以创造性地控制HTML的复杂性。因此,只要您没有复杂的嵌套情况或其他奇数边缘情况,那么这应该是可行的

描述
(.*)|(?:(?!)*

此正则表达式将执行以下操作:


  • 填充捕获组1…首先,我格式化了你的帖子。请确保你的问题格式清晰易懂。第二,不要这样做。使用解析器。从字符串中删除
    ,然后测试问题。我试图在另一个标记中匹配一个标记,而不是在标记中匹配一个单词。这样的问题就是为什么我们经常建议不要使用regexp来匹配。使用DOM解析器。我刚刚找到另一个有趣的答案,我想为其他人链接它:
    [0][0] = <tag2>is a WORD</tag2>
    [0][1] = <tag2>is a WORD</tag2>
    
    [1][0] = <TAG><TAG2>xxx</TAG2></TAG> --- Not a match
    [1][1] = 
    
    [2][0] = <TAG>xxxxxxx<TAG2>yyyy</TAG2>xxxxxxx</TAG>  --- Not a match
    [2][1] =