[英]Regular expression for multiline commentary in Matlab
我嘗試編寫一個與該模式匹配的正則表達式:
%{
...
...
%}
它也應該匹配:
sth %{
...
...
%}
要么
%{
something%}
%}again something
%}
但不是:
%{something
...
%}
要么
%{
...
%}something
要么
%{
...
something%}
因此,它匹配帶有任意字符后跟%{的行和僅包含%}的行之間的所有內容(請參見多行注釋Matlab: https : //fr.mathworks.com/help/matlab/matlab_prog/comments.html )
我嘗試了這個:
^.*%\{\n(^((?!%\}).)*\n)*(\s)*%\}\n
查找塊效果很好,但是例如,它不匹配:
%{
%}something
...
%}
你有什么想法 ?
您可以使用
^.*%\{(?:\n(?!.*%\{).*)*\n\s*%\}$
參見regex演示 。 與多行修飾符一起使用。
如果您的正則表達式引擎是Java,則可以使用\\R
來匹配任何換行符,並使用\\h
而不是\\s
來匹配任何水平空格:
^.*%\{(?:\R(?!.*%\{).*)*\R\h*%\}$
請參閱此正則表達式演示 。
細節
^
-一行的開始 .*
-盡可能多的0+個除換行符以外的字符 %\\{
-一個%{
子字符串 (?:\\n(?!.*%\\{).*)*
-0個或多個序列
\\n(?!.*%\\{)
-當前行中任何地方都沒有換行符%{
.*
-盡可能多的0+個除換行符以外的字符 \\n
換行符 \\s*
-0+空格 %\\}
-一個%}
子字符串 $
-行尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.