找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 83013|回复: 19

[文本处理] 已解决! 以<script开头,以</script>结尾,中间包含a.js的正则表达式

[复制链接]
发表于 2020-7-30 22:36:10 | 显示全部楼层 |阅读模式
本帖最后由 星尘 于 2020-7-31 11:50 编辑

以<script开头,以</script>结尾,中间包含a.js的正则表达式,能匹配换行符,非贪婪模式。
已解决!
发表于 2020-7-31 06:41:53 | 显示全部楼层
  1. <script[\s\S]*?</script>
复制代码
 楼主| 发表于 2020-7-31 08:12:35 | 显示全部楼层
本帖最后由 星尘 于 2020-7-31 08:17 编辑

不行啊,中间要包含a.js这个字符串,如果写成这样<script[\s\S]*?a\.js[\s\S]*?<\/script>,是贪婪模式的
发表于 2020-7-31 08:47:51 | 显示全部楼层
如果支持环视的话,贪婪模式又如何不能使用呢:
  1. <script((?s)((?!</script>).)*a\.js((?!</script>).)*)</script>
复制代码

评分

参与人数 2技术 +2 收起 理由
netdzb + 1 乐于助人
ivor + 1 good

查看全部评分

发表于 2020-7-31 08:55:02 | 显示全部楼层
关键是你用的是哪一种正则引擎。不同的引擎,对元字符及模式的支持度会有很大的不同。
发表于 2020-7-31 09:10:59 | 显示全部楼层
回复 3# 星尘

斜杠一般不需要转义吧!
 楼主| 发表于 2020-7-31 09:37:10 | 显示全部楼层
回复 5# qixiaobin0715
  1. asdddsadsdsas
  2.     <script type="text/javascript" src="/res.js"></script>
  3.      <script type="text/javascript">
  4.        checkMobile();
  5.       function checkMobile() {
  6.                       var ua = navigator.userAgent.toLowerCase();
  7.                 a.js
  8.                 if( str1.indexOf("type=public")!=-1 || str1.indexOf("type=news")!=-1){

  9.      </script>
  10.     <script type="text/javascript" src="/res.js"></script>
  11.         asddasdadsdsadsa
复制代码
比如我用这段代码做测试,匹配不到啊
 楼主| 发表于 2020-7-31 09:37:39 | 显示全部楼层
回复 6# qixiaobin0715


    我新手,不太熟悉
 楼主| 发表于 2020-7-31 09:39:58 | 显示全部楼层
回复 4# qixiaobin0715


   应该不支持,测试了下没有效果。在notepad里面测试是成功的
 楼主| 发表于 2020-7-31 09:49:47 | 显示全部楼层
我有一个文件夹,里面包含很多子目录和html文件,我需要把包含指定字符串的一段代码给正则掉,我用的UltraReplace(超级替换工具),但你那个匹配不到,可能是你说的正则引擎原因把
发表于 2020-7-31 10:09:01 | 显示全部楼层
回复 7# 星尘

你想匹配的是那(几)段文本?
 楼主| 发表于 2020-7-31 10:16:42 | 显示全部楼层
本帖最后由 星尘 于 2020-7-31 10:22 编辑

回复 11# qixiaobin0715
  1. asdddsadsdsas
  2.     <script type="text/javascript" src="/res.js"></script>
  3.      <script type="text/javascript">
  4.        checkMobile();
  5.       function checkMobile() {
  6.                       var ua = navigator.userAgent.toLowerCase();
  7.                 a.js
  8.                 if( str1.indexOf("type=public")!=-1 || str1.indexOf("type=news")!=-1){

  9.      </script>
  10.     <script type="text/javascript" src="/res.js"></script>
  11.         asddasdadsdsadsa
复制代码
比如在这段代码中匹配
  1. <script type="text/javascript">
  2.        checkMobile();
  3.       function checkMobile() {
  4.                       var ua = navigator.userAgent.toLowerCase();
  5.                 a.js
  6.                 if( str1.indexOf("type=public")!=-1 || str1.indexOf("type=news")!=-1){

  7.      </script>
复制代码
解决20元红包感谢,其他方法也行,只要能达到目的
发表于 2020-7-31 10:34:05 | 显示全部楼层
回复 12# 星尘

没用过UltraReplace,可能是不支持(?s),看看菜单选项里是否有类似“.号可匹配换行符”的选项。若有勾选,上面正则去掉“(?s)和最外层括号”试试;不行的或试试下面正则(效率可能要低一些):
  1. <script((?!</script>)(.|\n))*a\.js((?!</script>)(.|\n))*</script>
复制代码
发表于 2020-7-31 11:18:29 | 显示全部楼层
UltraEdit 可以这样,正则模式选 Perl
  1. <script(?:(?!</script>)[\s\S])*a\.js(?:(?!<\/script>)[\s\S])*</script>
复制代码
 楼主| 发表于 2020-7-31 11:50:44 | 显示全部楼层
回复 14# WHY


    这个可以,解决了,谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 03:53 , Processed in 0.023744 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表