我正在使用Python Regex,以便清理为经典ASP页面生成的代码。
我需要删除SINGLE LINE或MULTILINE ASP注释块。 (ASP注释行通常以引用开头)。
我的目标是匹配不包含可执行代码的块,但只包含包含注释的块。 在评论中有标签或空格,我需要替换这三个字符串:
字符串1:
<%' This multiline comment starts with two TAB characters after the quote
'and continues here
%>
字符串2:
<% 'This multiline comment starts with SPACES characters before the quote
'and continues here, with TABS before the quote
' and with spaces before and after the quote
%>
字符串3:
<%'This single line comment should at least be easy to remove%>
我尝试了以下正则表达式,但只获得了部分成功......: - /
output = re.sub(r'(<%(.*?)\')(.*?)(%>)', r'', output)
output = re.sub(r'<%(\t*|\s*)\'(.*)(%>)', r'', output)
你可以给我一点建议吗?
非常感谢您的帮助:任何提示都将受到高度赞赏; - )
答案 0 :(得分:1)
重新开始。
假设:
如果该行以单引号开头,则为其注释
使用仅引用行获取所有块
点.
元素不匹配换行符。
<%(?:\s*'.*)+\s*%>
格式化
<%
(?: \s* ' .* )+
\s*
%>
匹配所有样品。
修改
为安全起见,您应该在该点之前使用否定断言。
<%(?:\s*'(?:(?!%>).)*)+\s*%>
格式化
<%
(?:
\s* '
(?:
(?! %> )
.
)*
)+
\s*
%>