python 扫描js,html文件中的所有注释

小丫-- 2013-03-28 03:34:47
需求:
python扫描js,html中是否有匹配到的规则,匹配到后发邮件出来;但是有个问题,匹配的结果文件中有些其实是注释了的,不应该被扫描出来。
所以想用python 对js,html文件中的所有注释不进行扫描;扫描时,直接过滤掉所有的注释文件
哪位大侠有办法呢?小女子在此谢过了。


类似多行注释:/\*.*?\*/
单行的也有很多种情况:
//******;
** //****
引号内(包括单引号和双引号)的双斜线不算注释
引号是配对出现的, 两个引号之间的以反斜线转义掉的引号不算结束符
由连续的非引号非斜线部分组成的字符串也不是注释
除去上述内容以外, 以双斜线开始直至行尾的部分就是注释

有没有demo可以用python扫描时直接过滤js,和html的注释呢?
...全文
349 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小丫-- 2013-04-03
  • 打赏
  • 举报
回复
引用 6 楼 crifan 的回复:
引用 4 楼 x86 的回复:用BeautifulSoup解析,在输出到文件,注释自然就没有了。当然也可以直接用BeautifulSoup去解析匹配你的规则。 我之前写了足够详细的教程,你可以看看: 【教程】Python中第三方的用于解析HTML的库:BeautifulSoup 以及: 【总结】Python的第三方库BeautifulSoup的使用心得 ……
查看了BeautifulSoup 主要是针对html的匹配,因为我这里的静态代码扫描工具可能不只是html,那这里是不是还是用正则会更好一些 另外如果QQ联系,要怎么联系到你呢?
crifan 2013-04-03
  • 打赏
  • 举报
回复
引用 8 楼 u010069637 的回复:
引用 6 楼 crifan 的回复:引用 4 楼 x86 的回复:用BeautifulSoup解析,在输出到文件,注释自然就没有了。当然也可以直接用BeautifulSoup去解析匹配你的规则。 我之前写了足够详细的教程,你可以看看: 【教程】Python中第三方的用于解析HTML的库:BeautifulSoup 以及: 【总结】Python的第三方库Be……
html,javascript,css等等,都可以支持的。 不过,如果是想要提取其中的信息,那只是针对html的。 其他的js和css等,只能用正则去处理。 去: http://www.crifan.com/contact_me/ 可以发邮件给我。
crifan 2013-04-02
  • 打赏
  • 举报
回复
引用错了。。。
crifan 2013-04-02
  • 打赏
  • 举报
回复
引用 4 楼 x86 的回复:
用BeautifulSoup解析,在输出到文件,注释自然就没有了。当然也可以直接用BeautifulSoup去解析匹配你的规则。
我之前写了足够详细的教程,你可以看看: 【教程】Python中第三方的用于解析HTML的库:BeautifulSoup 以及: 【总结】Python的第三方库BeautifulSoup的使用心得 【整理】关于Python中的html处理库函数BeautifulSoup使用注意事项
小丫-- 2013-04-02
  • 打赏
  • 举报
回复
引用 4 楼 x86 的回复:
用BeautifulSoup解析,在输出到文件,注释自然就没有了。当然也可以直接用BeautifulSoup去解析匹配你的规则。
你好 能不能详细说明下用BeautifulSoup去解析匹配规则呢
x86 2013-04-01
  • 打赏
  • 举报
回复
用BeautifulSoup解析,在输出到文件,注释自然就没有了。当然也可以直接用BeautifulSoup去解析匹配你的规则。
ChongQingJin28 2013-04-01
  • 打赏
  • 举报
回复
我觉得用正则表达式有一个问题 :好像不能设置搜索或匹配的开始点。
为了搜索或匹配就必须得到substring,并生成一个排除了注释的string。
会涉及大量的string分解、合成。
(如果正则表达式能够设置开始点就没有这样的问题了。python有另外的正则搜索吗?)

我的方法是不用将注释排除,只是记录下他的开始与结束就可以了。
如果你所匹配的东西是在注释的范围内,可以将其忽略。
(对string也如此,也把string的位置记录下来)

步骤如下:
变量 : 文件内容的list 当前指针
1.创建函数 single_comment :
作用是记录单行注释的位置 。首先判断当前指针处的char是“//” 然后对指针加1 ,直到找到一个“\n”结束

2.创建函数 mult_comment :
作用是记录多行注释的位置 。首先判断当前指针处的char是“/*” 然后对指针加1 ,直到找到一个“*/”结束

3.创建函数 html_comment : 和上面的comment函数相同,只是判断不一样

4.创建函数 single_quote : 首先判断当前指针处的char是“'” 然后对指针加1 ,直到找到一个“\”或“'”.
若找到的是"'"则结束。若找到的是"\",则指针 +2 并继续寻找。

5.创建函数 double_quote :同上面的single_quote 。

(注意,以上所有的函数都要记录开始与结束点。)

6.创建一个主函数 :首先判断当前指针处是否是“'”、“/*”、“//”、“"”、“<!--”,如果是,则调用相应的函数处理。如果不是,就找到他们。

(如果你觉得可行,自己写代码吧。如果你找到一种正则表达式可以从指定的位置开始搜索,那就用正则匹配代替指针+1)
crifan 2013-04-01
  • 打赏
  • 举报
回复
答案是:没有这种demo 解决办法: 自己写代码实现。 建议: 目前的可以想到的思路是: 1.因为多行注释中,或许可能包含单行注释,所以为了安全起见: 先删除多行注释 所用正则:
/\*.*?\*/
2.再删除单行注释: 你所给出的: //******; 其实等价于: //xxx 因为//后面是不管是否包含分号';',都视为注释的 所以单行注释只有一种,可以用正则:
//.+?$
如此,就可以删除掉多行和单行注释 然后继续你的处理了。
libralibra 2013-03-28
  • 打赏
  • 举报
回复
用正则先把注释都删除,就是替换成'',然后对结果扫描
文名: 正则表达式经典实例 原名: Regular Expression Cookbook 作者: (美)高瓦特斯(Goyvaerts,J.) (美)利维森(Levithan,S.)译者: 郭耀 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115228321发行时间: 2010年06月01日 地区: 大陆 语言: 简体文 简介: 编辑推荐 每个程序员都会遇到需要使用正则表达式的情况,但是要用好正则表达式却并不容易。本书提供了100多个实例,以帮助读者使用正则表达式处理数据和文本。即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的实例。   本书主要包括以下内容:   通过一个精练的教程理解正则表达式的基本原理和技巧;   在不同的编程语言和脚本语言有效使用正则表达式;   学习如何对输入进行合法性检查和格式化;   处理单词、文本行、特殊字符和数值;   学习如何在URL、路径、标记语言和数据交换使用正则   表达式;   学习更高深的正则表达式特性的微妙之处;   理解在不同语言正则表达式的APl、语法和行为之间的   区别;   创建更好的正则表达式来满足个性化的需求。 内容简介 本书讲解了基于8种常用的编程语言使用正则表达式的经典实例。书提供了上百种可以在实战使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。   本书的读者对象是对正则表达式感兴趣的软件开发人员和系统管理员。本书旨在教会读者很多新的技巧以及如何避免语言特定的陷阱,读者可以通过本书提供的实例解决方案库来解决实践的复杂问题。 作者简介 Jan Goyvaerts领导着Just Great Software公司,他在这个公司设计和开发了一些最流行的正则表达式软件。他的产品包括RegexBuddy,世界上唯一可以模拟l5种正则表达式流派特性的正则表达式编辑器,以及PowerGREP,Microsoft Windows平台上功能最强大的9rep工具。 目录: 第1章 正则表达式简介 1.1 正则表达式的定义 1.2 使用正则表达式的工具 第2章 正则表达式的基本技巧 2.1 匹配字面文本 2.2 匹配不可打印字符 2.3 匹配多个字符之一 2.4 匹配任意字符 2.5 匹配文本行起始和/或文本行结尾 2.6 匹配整个单词 2.7 Unicode代码点、属性、区块和脚本 2.8 匹配多个选择分支之一 2.9 分组和捕获匹配的子串 2.10 再次匹配先前匹配的文本 2.11 捕获和命名匹配子串 2.12 把正则表达式的一部分重复多次 2.13 选择最小和最大重复次数 2.14 消除不必要的回溯 2.15 避免重复逃逸 2.16 检查一个匹配,但不添加到整体匹配 2.17 根据条件匹配两者之一 2.18 向正则表达式添加注释 2.19 在替代文本添加字面文本 2.20 在替代文本添加正则匹配 2.21 把部分的正则匹配添加到替代文本 2.22 把匹配上下文插入到替代文本 第3章 使用正则表达式编程 3.1 在源代码使用字面正则表达式 3.2 导入正则表达式函数库 3.3 创建正则表达式对象 3.4 设置正则表达式选项 3.5 检查是否可以在目标字符串找到匹配 3.6 检查正则表达式能否整个匹配目标字符串 3.7 获取匹配文本 3.8 决定匹配的位置和长度 3.9 获取匹配文本的一部分 3.10 获取所有匹配的列表 3.11 遍历所有匹配 3.12 在过程代码对匹配结果进行验证 3.13 在另一个匹配查找匹配 3.14 替换所有匹配 3.15 使用匹配的子串来替换匹配 3.16 使用代码生成的替代文本来替换匹配 3.17 替换另一个正则式匹配的所有匹配 3.18 替换另一个正则式匹配之间的所有匹配 3.19 拆分字符串 3.20 拆分字符串,保留正则匹配 3.21 逐行查找 第4章 合法性验证和格式化 4.1 E-mail地址的合法性验证 4.2 北美电话号码的合法性验证和格式化 4.3 国际电话号码的合法性验证 4.4 传统日期格式的合法性验证 4.5 对传统日期格式进行精确的合法性验证 4.6 传统时间格式的合法性验证 4.7 检查ISO 8601格式的日期和时间 4.8 限制输入只能为字母数字字符 4.9 限制文本长度 4.10 限制文本的行数 4.11 肯定响应的检查 4.12 社会安全号码的合法性验证 4.13 ISBN的合法性验证 4.14 ZIP代码的合法性验证 4.15 加拿大邮政编码的合法性验证 4.16 英国邮政编码的合法性验证 4.17 查找使用邮局信箱的地址 4.18 转换姓名格式 4.19 信用卡号码的合法性验证 4.20 欧盟增值税代码 第5章 单词、文本行和特殊字符 5.1 查找一个特定单词 5.2 查找多个单词之一 5.3 查找相似单词 5.4 查找除某个单词之外的任意单词 5.5 查找后面不跟着某个特定单词的任意单词 5.6 查找不跟在某个特定单词之后的任意单词 5.7 查找临近单词 5.8 查找重复单词 5.9 删除重复的文本行 5.10 匹配包含某个单词的整行内容 5.11 匹配不包含某个单词的整行 5.12 删除前导和拖尾的空格 5.13 把重复的空白替换为单个空格 5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符的数 6.9 罗马数字 第7章 URL、路径和Internet地址 7.1 URL合法性验证 7.2 在全文查找URL 7.3 在全文查找加引号的URL 7.4 在全文寻找加括号的URL 7.5 把URL转变为链接 7.6 URN合法性验证 7.7 通用URL的合法性验证 7.8 从URL提取通信协议方案 7.9 从URL抽取用户名 7.10 从URL抽取主机名 7.11 从URL抽取端口号 7.12 从URL抽取路径 7.13 从URL抽取查询 7.14 从URL抽取片段 7.15 域名合法性验证 7.16 匹配IPv4地址 7.17 匹配IPv6地址 7.18 Windows路径的合法性验证 7.19 分解Windows路径 7.20 从Windows路径抽取盘符 7.21 从UNC路径抽取服务器和共享名 7.22 从Windows路径抽取文件夹 7.23 从Windows路径抽取文件名 7.24 从Windows路径抽取文件扩展名 7.25 去除文件的非法字符 第8章 标记语言和数据交换 8.1 查找XML风格的标签 8.2 把标签b替换为strong 8.3 删掉除em和strong之外的所有XML风格标签 8.4 匹配XML名称 8.5 添加p和br标签将纯文本转换为HTML 8.6 在XML风格的标签查找某个特定属性 8.7 向不包含cellspacing属性的 table标签添加该属性 8.8 删除XML风格的注释 8.9 在XML风格的注释查找单词 8.10 替换在CSV文件使用的分隔符 8.11 抽取某个特定列的CSV域 8.12 匹配INI段头 8.13 匹配INI段块 8.14 匹配INI名称-值对

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧