Skip to main content
 首页 » 编程设计

c#之我希望修复此正则表达式以分别匹配两个文本 block

2024年02月06日34freeliver54

@@IF[- (<>%='@a-z0-9\r\n\t).:!_,+/""]+(@@END IF|@ENDIF) 

您好,我希望使用 C# 修复上述正则表达式以分别匹配两个文本 block 。目前它将以下视为单个匹配项。

@@IF (<%=SHOPCODE%> == '2' ) THEN 
return complicated if  
@@ELSE 
Boo 
@@END IF  
 
! 
 
@@IF (<%=SHOPCODE%> == '1' )  THEN 
County is UK 
@@ELSE 
Not UK 
@@END IF 

请您参考如下方法:

您可以尝试使用Lazy 方式捕获组。

(@@IF\b[\S\s]*?\r?\n@@?END ?IF) 

Live Demo

正则表达式解释:(根据您的需要您可以更改可选)

  (                        group and capture to \1: 
    @@IF                     '@@IF' 
    \b                       the word boundary 
    [\S\s]*?                 any character (0 or more times (least possible)) 
    \r?                      '\r' (carriage return) (optional) 
    \n?                      '\n' (newline) 
    @                        '@' 
    @?                       '@' (optional) 
    END                      'END' 
     ?                       ' ' (optional) 
    IF                       'IF' 
  )                        end of \1