代码之家  ›  专栏  ›  技术社区  ›  Katia

根据特定规则进行多行匹配

  •  1
  • Katia  · 技术社区  · 2 年前

    如何匹配包含 #Test 以及接下来的所有行,只要它们以:

    • ;

    例子:

     1.        ; #Test
     2.        ; bbbb
     3.    
     4.        ; #Test
     5.
     6.        ; aaa
    

    1号线和2号线是 one

    这是我在atm机上得到的: \s*(#Test).*(\s*;.*)*

    https://regex101.com/r/HvPAxt/1

    我目前的疑问是,当发现空行时,如何停止匹配。

    示例2:

     1.        ; #Test
     2.        ; bbbb
     3. 
     4. xxxx
     5. ; #Test
     6. yyyy
     7.
     8.    ; #Test
     9.
     10.   ; bbb
    

    1号线和2号线是

    第8行是另一个匹配。

    1 回复  |  直到 2 年前
        1
  •  2
  •   joanis Ankur Kumar Srivastava    2 年前

    RE的问题是 \s

    您需要使用关于换行符的显式正则表达式,因为您对它们有特定的要求。

    所以我会用 [ \t]* \s* :

    [ \t]*(#Test).*(\n[ \t]*;.*)*
    

    PS:确保你不使用 s 选项(单行),因为 .