Java Matlab中多行注释的正则表达式
我尝试编写一个与此模式匹配的regexp:Java Matlab中多行注释的正则表达式,java,regex,matlab,comments,Java,Regex,Matlab,Comments,我尝试编写一个与此模式匹配的regexp: %{ ... ... %} 它还应匹配: sth %{ ... ... %} 或 但不是: %{something ... %} 或 或 因此,它匹配任何字符后跟%{的行和只有%}的行之间的所有内容(请参见多行注释Matlab:) 我试过这个: ^.*%\{\n(^((?!%\}).)*\n)*(\s)*%\}\n 它可以很好地查找块,但例如,它不匹配: %{ %}something ... %} 你有什么想法吗?你可以用
%{
...
...
%}
它还应匹配:
sth %{
...
...
%}
或
但不是:
%{something
...
%}
或
或
因此,它匹配任何字符后跟%{的行和只有%}的行之间的所有内容(请参见多行注释Matlab:)
我试过这个:
^.*%\{\n(^((?!%\}).)*\n)*(\s)*%\}\n
它可以很好地查找块,但例如,它不匹配:
%{
%}something
...
%}
你有什么想法吗?你可以用
^.*%\{(?:\n(?!.*%\{).*)*\n\s*%\}$
看。将其与多行修改器一起使用
如果您的正则表达式引擎是Java,则可以使用\R
匹配任何换行符,并使用\h
而不是\s
匹配任何水平空白:
^.*%\{(?:\R(?!.*%\{).*)*\R\h*%\}$
看
详细信息
-行的开头^
-尽可能多的0+字符(断线字符除外)*
-一个%\{
子字符串%{
-0个或多个(?:\n(?。*%\{.*)*
-在当前行的任何位置都没有紧跟\n(?。*%\{)
的换行符%{
-尽可能多的0+字符(断线字符除外)*
-换行符\n
-0+空格\s*
-a%\}
子字符串%}
-行结束$
^.*%\{\n(?:(?!%\{)。*\n)*\s*%\}$
,请参阅,谢谢您的回答。它似乎不起作用,请参阅,我觉得它甚至在您提供的链接中也起作用。最后一个示例是否匹配?在我提供的最后一个示例中,您可以看到行leftpanel=treepanel也匹配或不匹配。但是,如果我删除行开头的空白,它将匹配正确y、 ^.*%\{(?:\n(?。*%\{.*)*\n\s*%\}$
?请参阅
%{
%}something
...
%}
^.*%\{(?:\n(?!.*%\{).*)*\n\s*%\}$
^.*%\{(?:\R(?!.*%\{).*)*\R\h*%\}$