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] =