记录三条重要的正则表达式

复制代码
1. <script\s+\S+comment.js[\s\S]*?</script>
结果可以匹配出包含comment.js的script标签的内容,比如:
输入:

    ...
    <script>
    document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,'js');
    if(window.Shopify&&window.Shopify.designMode)document.documentElement.className+=' in-theme-editor';
    if(('ontouchstart' in window)||window.DocumentTouch&&document instanceof DocumentTouch)document.documentElement.className=document.documentElement.className.replace(/\bno-touch\b/,'has-touch');
    </script>

    <link href="//cdn.shopify.com/s/files/1/0056/2370/9799/t/38/assets/theme.scss.css?10509" rel="stylesheet" type="text/css" media="all" />
    <script src="https://alireviews-cdn.fireapps.vn/js/frontend/comment.js" defer="defer"></script>
    <link rel="stylesheet" href="https://alireviews-cdn.fireapps.vn/css/frontend/vendor.css">
    <link rel="stylesheet" href="https://alireviews-cdn.fireapps.vn/css/frontend/grid.css">
    ...

  使用:

    Matcher matcher = Pattern.compile("<script\\s+\\S+comment.js[\\s\\S]*?</script>").matcher(text);
    if (matcher.find()) {
      String comment = matcher.group(0);
    }

  输出:<script src="https://alireviews-cdn.fireapps.vn/js/frontend/comment.js" defer="defer"></script> 

  解释:\s+表示一个或者多个空格换行符,\S+表示一个或者多个非空格或者非换行符,[]表示一个组,×表示一个或者多个,关键是在于?,?是非贪婪匹配,即只有匹配到一个</script>结束

复制代码

 

复制代码
2. src[\S]*empire.js[\s\S]*?</script>
输入:

    ...
    </svg>
    </button>
    <div class="modal-content" data-modal-content></div>
    </div>
    </div>
    <script
    src="//cdn.shopify.com/s/files/1/0056/2370/9799/t/38/assets/empire.js?10509"
    data-scripts
    data-shopify-api-url="//cdn.shopify.com/s/assets/themes_support/api.jquery-e94e010e92e659b566dbc436fdfe5242764380e00398907a14955ba301a4749f.js"
    data-shopify-currencies="//cdn.shopify.com/s/javascripts/currencies.js"
    data-shopify-countries="/services/javascripts/countries.js"
    data-shopify-common="//cdn.shopify.com/s/assets/themes_support/shopify_common-8ea6ac3faf357236a97f5de749df4da6e8436ca107bc3a4ee805cbf08bc47392.js"
    data-shopify-cart="//cdn.shopify.com/s/files/1/0056/2370/9799/t/38/assets/jquery.cart.js?10509">
    </script>
    ...

  使用:

    Matcher matcher = Pattern.compile("src[\\S]*empire.js[\\s\\S]*?</script>").matcher(text);
    if (matcher.find()) {
      String empire = matcher.group(0);
    }

  输出:

    src="//cdn.shopify.com/s/files/1/0056/2370/9799/t/38/assets/empire.js?10509"
    data-scripts
    data-shopify-api-url="//cdn.shopify.com/s/assets/themes_support/api.jquery-e94e010e92e659b566dbc436fdfe5242764380e00398907a14955ba301a4749f.js"
    data-shopify-currencies="//cdn.shopify.com/s/javascripts/currencies.js"
    data-shopify-countries="/services/javascripts/countries.js"
    data-shopify-common="//cdn.shopify.com/s/assets/themes_support/shopify_common-8ea6ac3faf357236a97f5de749df4da6e8436ca107bc3a4ee805cbf08bc47392.js"
    data-shopify-cart="//cdn.shopify.com/s/files/1/0056/2370/9799/t/38/assets/jquery.cart.js?10509">
    </script>

复制代码

 

3. <script(\s+.*)cdn\.shopify\.com(\S*)assets([\s\S]*?)</script>
匹配结果:<script src="/cdn.shopify.com/.../.../assets/..."></script>,就是匹配含有cdn.shopify.com、assets关键字的script标签及其内容。

 

posted @   yongfengnice  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2017-05-20 kotlin基础语法
2017-05-20 window10企业版永久密钥激活
2017-05-20 window10下开启或者卸载Linux子系统的步骤
2017-05-20 ubuntu下安装gcc,g++
点击右上角即可分享
微信分享提示