我希望修复这个正则表达式,以分别匹配两个文本块

本文关键字:文本 两个 正则表达式 我希望 | 更新日期: 2023-09-27 18:14:29

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

你好,我希望修复上面的正则表达式,以分别使用c#匹配两个文本块。目前,它将下面的内容视为单个匹配。

@@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)

现场演示

正则表达式解释:(根据你的需要,你可以改变可选)

  (                        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

又一个贪婪的例子…

使用非贪婪量词(并简化正则表达式):

@@IF's+.*?(?:@@END IF|@ENDIF)

此处演示:http://regex101.com/r/kV0tM5/1

部分.*?将匹配尽可能少的字符