用于精确匹配字符串的正则表达式
REGEX for Matching A String Exactly
我在使用 REGEX (PHP) 匹配字符串时遇到了一些问题。
我们有这个代码:
<p style="text-align: center; ">
<iframe height="360" src="http://example.com/videoembed/9338/" frameborder="0" width="640"></iframe></p>
我们有这个正则表达式:
/<p.*>.*<iframe.*><\/iframe><\/p>/is
但是,这也会匹配字符串中的所有段落标签 - 而不仅仅是包含 IFRAME 标签的段落标签。怎么才能只匹配包含IFRAME的P标签呢?
我们也想使用相同的正则表达式匹配此代码:
<p style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="360" src="http://example.com/videoembed/9718/" width="640"></iframe></p>
注意没有换行符和更少的空格(在 P 标记中)。
我们怎样才能做到这一点?我对 REGEX 有点陌生。
提前感谢您的帮助。
仅匹配 <p>
和 <iframe>
之间的空白字符:
/<p[^>]*>\s*<iframe[^>]*><\/iframe>\s*<\/p>/is
我还为 >
添加了排除而不是任何字符 (.
)。
<p.*?>.*?<iframe.*?><\/iframe><\/p>
尝试 this.See 演示。
https://regex101.com/r/sH8aR8/30
$re = "/<p.*?>.*?<iframe.*?><\/iframe><\/p>/is";
$str = "<p style=\"text-align: center; \">\n <iframe height=\"360\" src=\"http://example.com/videoembed/9338/\" frameborder=\"0\" width=\"640\"></iframe></p>\n\n<p style=\"text-align: center;\"><iframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" src=\"http://example.com/videoembed/9718/\" width=\"640\"></iframe></p>";
preg_match_all($re, $str, $matches);
让你的 *
贪婪运算符 non greedy
*?
使用 [^>]* 而不是 .* 如:
/<p[^.]*>[^<]*<iframe[^>]*><\/iframe><\/p>/is
我在使用 REGEX (PHP) 匹配字符串时遇到了一些问题。
我们有这个代码:
<p style="text-align: center; ">
<iframe height="360" src="http://example.com/videoembed/9338/" frameborder="0" width="640"></iframe></p>
我们有这个正则表达式:
/<p.*>.*<iframe.*><\/iframe><\/p>/is
但是,这也会匹配字符串中的所有段落标签 - 而不仅仅是包含 IFRAME 标签的段落标签。怎么才能只匹配包含IFRAME的P标签呢?
我们也想使用相同的正则表达式匹配此代码:
<p style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="360" src="http://example.com/videoembed/9718/" width="640"></iframe></p>
注意没有换行符和更少的空格(在 P 标记中)。
我们怎样才能做到这一点?我对 REGEX 有点陌生。
提前感谢您的帮助。
仅匹配 <p>
和 <iframe>
之间的空白字符:
/<p[^>]*>\s*<iframe[^>]*><\/iframe>\s*<\/p>/is
我还为 >
添加了排除而不是任何字符 (.
)。
<p.*?>.*?<iframe.*?><\/iframe><\/p>
尝试 this.See 演示。
https://regex101.com/r/sH8aR8/30
$re = "/<p.*?>.*?<iframe.*?><\/iframe><\/p>/is";
$str = "<p style=\"text-align: center; \">\n <iframe height=\"360\" src=\"http://example.com/videoembed/9338/\" frameborder=\"0\" width=\"640\"></iframe></p>\n\n<p style=\"text-align: center;\"><iframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" src=\"http://example.com/videoembed/9718/\" width=\"640\"></iframe></p>";
preg_match_all($re, $str, $matches);
让你的 *
贪婪运算符 non greedy
*?
使用 [^>]* 而不是 .* 如:
/<p[^.]*>[^<]*<iframe[^>]*><\/iframe><\/p>/is