簡體   English   中英

Matlab中多行注釋的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM