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

  • 本文关键字:规则 regex
  • 更新时间 :
  • 英文 :


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

开头
  • 任意数量的空格,后跟;

例子:

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

第一行和第二行是one匹配,第4行是另一个匹配

这是我得到的:s*(#Test).*(s*;.*)*

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

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

Example2:

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

第一行和第二行是onematch

第5行另一个匹配

第8行是另一个匹配。

RE的问题是s也匹配换行符。

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

所以我会使用[ t]*来匹配空格和制表符,而不是s*:
[ t]*(#Test).*(n[ t]*;.*)*

PS:请确保不要使用s选项(单行),因为这样.也会开始匹配换行符。

最新更新