首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用正则表达式实现多行模式

如何用正则表达式实现多行模式
EN

Stack Overflow用户
提问于 2018-06-22 04:44:07
回答 1查看 37关注 0票数 0

我想从我的代码中匹配系统定义。系统块定义如下:

代码语言:javascript
复制
  "customized system name" = SYSTEM              
  TYPE             = PSZ   
  Other system definition
  FAN-SCHEDULE     = "S1 Sys1 (PSZ) Fan Sch"
   CONTROL-ZONE     = "EL1 South Perim Zn (G.S1)"
  ..

下面列出了我的代码示例:

代码语言:javascript
复制
 $---- 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    
   ..    

根据我有限的知识,创建以下正则表达式仅与系统块匹配:

代码语言:javascript
复制
^"(.*?)= SYSTEM(.*?)\.\.    

但是在正确匹配第一个系统块之后,表达式将错误地将第二个区域和系统块匹配在一起:不匹配屏幕截图

我想知道如何提高我的表达能力。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 07:17:30

你可以用这个正则表达式来做:

代码语言:javascript
复制
^".*? = SYSTEM(?:(?!\s*\.\.)[\s\S])+

演示

解释性:我们使用脾气暴躁的象征来断言SYSTEM块末尾的两个点。[\s\S]作为一个经过修改的.来匹配跨越多行的所有内容。

关于Notepad++:确保关闭选项. matches newline,它将工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50980797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档