簡體   English   中英

regex - 查找不包含子字符串的多行字符串

[英]regex - find multiline string that does not contain substring

我需要找到某些缺少raise關鍵字的代碼塊,如下所示:

這些是我正在搜索的匹配類型

except
  FreeAndNil(result);
end;

雖然這些應該被忽略

except
  FreeAndNil(result);
  raise;
end;

請記住,在exceptend;之間end; 關鍵字可以是任何類型或長度的文本。

我嘗試了以下正則表達式: except((?!raise).)*end; 但是它不適用於多行場景。

匹配換行符的選項可以通過使用否定前瞻來匹配 except 和 end 之間的所有行,斷言這些行不以 except 或 end 開頭:

\bexcept\s*\r?\n(?:(?!(?:except|[\t ]+raise;)$).*\r?\n)*end;

在零件中

  • \\bexcept\\s*\\r?\\n匹配除了,0+ 空格字符和換行符
  • (?:非捕獲組
    • (?!負前瞻,斷言右邊的不是
      • (?:except|[\\t ]+raise;)$)匹配except或1+ 空格或制表符並raise; 后跟字符串的結尾。
    • )關閉前瞻
    • .*\\r?\\n匹配整行后跟換行符
  • )*重復非捕獲組 0+ 次
  • end; 字面匹配

正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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