我发现此突出显示编辑器中存在错误:http://cshe.ds4a.com/
以下ASP.Net代码无法正确突出显示
<%@ Page Title="<%$ Resources: XXX %>" Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
问题在于正则表达式,如何通过正则表达式找到整行?
我正在使用ActionScript3中的RegExp
主要挑战是:
&lt;%@%&gt; 指令可能在其属性中包含另一个&lt;%$%&gt; 指令,就像上面的< / p>
&lt;%@%&gt; 指令可能包含换行符,如下所示。
<%@ Page Title="<%$ Resources: XXX %>" Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
3 。 &lt;%@%&gt;指令可能后跟另一个&lt;%@%&gt; ,没有任何空格/换行符
<%@ Page Title="<%$ Resources: XXX %>" Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %><%@ Import Namespace="System" %>
谢谢
答案 0 :(得分:2)
我不确定所有这些逃脱是否必要,但我保留了它们以获得良好的安慰。这发现你在记事本++中的行找到了
^<\%\@.*\%>$
修改
对于多行,请设置multiline和dotall标志。那些表达应该跨越几行,并且那个。通配符应与换行符匹配(\ n)。
/<\%\@.*\%>/sm
或
<\%\@.*\%>
使用s和m标志。
答案 1 :(得分:1)
试试这个:
/<%@[^%"']++(?:(?:%(?!>)|"[^"]*+"|'[^']*+')[^%"']++)*+%>/
用双引号或单引号括起来的任何内容都被视为通用字符串内容,因此属性值中的%>
不会过早关闭标记以进行匹配。
答案 2 :(得分:0)
根据标题,我创建了一个小的RegEx,它还在文件的开头或结尾处理whitepasce。但是我无法保证这是否适合您的项目。
^\s*<%@.*>\s*$
我使用PHP函数preg_match_all()
更新
将此模式用于多行。您的RegExLibrary必须支持参数“s”(它接受换行符作为字符)
/\s*<%@.*>\s*/s