另一个 - 正则表达式匹配*不包含单词的文本

时间:2015-05-19 08:59:34

标签: php regex preg-match

我有如下输入,其中有两个脚本标记,第二个脚本标记有src属性,其中我需要检查是否存在wrapperId={wrapper_id} -

<script type="text/javascript"> var blah; </script><script id="bleh" type="text/javascript" src="//domain/test.js?siteid=270606&testmode=0&banner360=1&banner=0&placementid=0&tp=3&wrapperId={wrapper_id}" > </script>

以下是我到目前为止准备的正则表达式 -

<script(.*?)(?!<\/script>)(.*?)wrapperId={wrapper_id}(.*?)<\/script>

我正在尝试匹配包含结束脚本标记(</script>)的脚本标记。

但是,如果我在https://regex101.com/r/oZ2jL6/1运行它,我会看到它与第一个脚本标记匹配。

如果我使用PHP preg_match(),结果也会说找到匹配,但我确信它匹配第一个脚本标记,我不想要。

已经检查过相关问题 -

Regular expression to match a line that doesn't contain a word?

1 个答案:

答案 0 :(得分:0)

  

我正在尝试匹配不包含结束脚本标记()的脚本标记。

在您的示例中,您有一个结束标记。匹配html的正则表达式通常不是一个好主意。无效HTML的正则表达式会让您头疼。

假设像你的例子那样的结束标记尝试:

<script(.*?)<\/script><script(.*?)wrapperId={wrapper_id}(.*?)<\/script>