簡體   English   中英

如何用正則表達式設置多行模式

[英]How to may multiple lines pattern with regular expression

我想從代碼中匹配SYSTEM定義。 系統塊定義如下:

  "customized system name" = SYSTEM              
  TYPE             = PSZ   
  Other system definition
  FAN-SCHEDULE     = "S1 Sys1 (PSZ) Fan Sch"
   CONTROL-ZONE     = "EL1 South Perim Zn (G.S1)"
  ..

我的代碼示例如下:

 $---- First SYSTEM block
 "EL1 Sys1 (PSZ) (G.C5)" = SYSTEM          
   TYPE             = PSZ    
  FAN-SCHEDULE     = "S1 Sys1 (PSZ) Fan Sch"
   CONTROL-ZONE     = "EL1 South Perim Zn (G.S1)"
   ..    

 $---- First ZONE block
"EL1 West Perim Pl Zn (G.W9)" = ZONE                
   TYPE             = CONDITIONED    
   ..    

 $---- Second SYSTEM block
"EL1 Sys1 (PSZ) (G.W4)" = SYSTEM              
   TYPE             = PSZ    
  FAN-SCHEDULE     = "S1 Sys1 (PSZ) Fan Sch"
   CONTROL-ZONE     = "EL1 South Perim Zn (G.S1)"
   ..    

 $---- Second ZONE block
"EL1 Core Pl Zn (G.C10)" = ZONE                
   TYPE             = CONDITIONED    
   ..    

據我所知,以下正則表達式被創建為僅與系統塊匹配:

^"(.*?)= SYSTEM(.*?)\.\.    

但是在正確匹配第一個系統塊之后,該表達式將錯誤地將第二個區域和系統塊匹配在一起: 不匹配屏幕截圖

我想知道如何改善我的表情。

您可以使用此正則表達式執行此操作:

^".*? = SYSTEM(?:(?!\s*\.\.)[\s\S])+

演示版

說明 :我們使用一個經過調節的貪婪令牌來在SYSTEM塊的末尾聲明兩個點。 [\\s\\S]作為修改的. 跨多行匹配所有內容。

關於Notepad ++:確保關閉該選項. matches newline . matches newline ,它將起作用。

暫無
暫無

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

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