查找 html 元素作为 php 变量的行

查找 html 元素作为 php 变量的行

我正在尝试创建正则表达式以与 grep 一起使用来查找具有 html 元素作为值的 php variabe 行,但我遇到了问题。

我设法做到了:

.*(\$)*(\=)*(\<).*\n?

它应该匹配包含 $、= 和 < 字符的行。

例如:

$var = "<h1>test</h1>";

我正在使用的 Grep 命令:

grep -Pro ".*(\$)*(\=)*(\<).*\n?"

由于某种原因,它似乎也匹配这样的行:

echo "</td> \n";

答案1

*后面的 s一如既往地表示零或多个。(\$)(\=)

表示.*\n?零个或多个任意字符(可选)(由于?,表示零个或一个),后跟\n

这意味着.*(\$)*(\=)*(\<).*\n?将匹配任何行,(\<)无论其前面是否有转义$和/或 an =

在英语中,该正则表达式读作“零个或多个字符,后面可选跟一个$,然后可能是一个=,然后是一个<(不是可选的),然后是零个或多个字符,后面可选跟一个换行符”。

换句话说,整个正则表达式(忽略捕获)相当于<.这是正则表达式中唯一的东西不是选修的。

顺便说一句,如果你的意思是一个或多个,请使用+代替。*

您可能想尝试更多类似的事情:

grep -P '\$var\s*=\s*['"].*<[^>]+>'

匹配$var后跟零个或多个空白字符,然后是一个=,然后再次是零个或多个空白,后跟一个'或一个",然后是零个或多个任意字符,然后是<任意字符除了a >,最后是 a >

例如$var='....<h1>'会匹配。

注意,这不会捕获'var=' 和任何 html 之间有换行符的地方。$var='htmlcode'

相关内容