用于在字符串中查找标记的C#正则表达式模式

时间:2018-02-13 18:06:52

标签: c# regex

对于下面的字符串,我想只选择包含url http://cdn.walkme.com/users的内部脚本标记,并用空字符串替换所选标记,以便有人帮我处理正则表达式模式

<script><script type="text/javascript">(function() {var walkme = document.createElement('script'); walkme.type = 'text/javascript'; walkme.async = true; walkme.src='http://cdn.walkme.com/users/cb643dab0d6f4c7cbc9d436e7c06f719/walkme_cb643dab0d6f4c7cbc9d436e7c06f719.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(walkme, s); window._walkmeConfig = {smartLoad:true}; })();</script></script>

我试过这个< script(.+)http://cdn.walkme.com/users/.+?\/script>

1 个答案:

答案 0 :(得分:0)

我同意,全面和通用的正则表达式无法解析标准支持的任何(x)HTML。这些事情本质上是正确的。

使用正则表达式完成很多较小的酷任务完全没问题。就像你的情况一样,为了从页面标记中删除特定脚本,你可以使用以下正则表达式来查找条目,然后用空字符串替换它:

\<script\>\<script type="text/javascript"\>\(function\(\) \{var walkme =.*\</script\>

它做了一件非常简单的事情 - 把所有事情都放在

之间
<script><script type="text/javascript">(function() {var walkme = 

(您可以包含更多特定的文字)和

</script>

只需确保正确转义特殊符号(例如/,(或))。

<强>被修改 为了选择内部需要使用所谓的positive lookahead来打开一个后立即查找第一个结束标记:

<script type="text/javascript">\(function\(\) {var walkme =.*(?=</script>)