用于捕获以“###”或“*** Entry”开头的整行的正则表达式

Regular expression for capuring entire lines that start with either '###' or '*** Entry'

我有大文件,每个文件包含很多行,有些行以一系列字符为前缀,例如:

*** Entry 4 *** 05-17-2021 08:05:36

### Scrambled GET_DEVICE_INFO response ###
### VIEW_LOG_RADIO EnabledE(¾ç@VENT_CRIT_MANUF 8 ###

我想搜索 return 所有以 ###*** Entry 开头的行,但我看到了意想不到的结果。即我看到 returned 的内容超出了我打算包含的内容。到目前为止我最接近的是:

^[(###|*** Entry)].*  

它 return 是消息:

“已达到最大结果大小。检查“find_in_files_max_result_size”。 3552 个文件中的 176949 个匹配项

我正在寻找改进此尝试或全新表达方式的建议。

请注意,我包含 'Sublime Text' 标记只是因为它恰好是我正在使用的实用程序,因为它包含正则表达式搜索。请不要因为这个标签而排除您的想法:)

编辑 以解决评论中的问题:

正在 14 个文件中搜索“^(###|*** Entry).*$”(正则表达式)

C:\tempExtract\___CR2_ISL_CharacterizationStudy\SummaryDataAnalysislogs04.txt:
    1  
    2: *** Entry 1 *** 05-17-2021 06:58:51
    3  *** ID: 49241341 ***
    4  *** PN: 3315185-000 ***
    .
    6  *** Conclusions-Description: ***
    7  
    8: ### Device is not enumerated ###
    9: ### Occurs after 'RelayRelayRelayRelayRelayRelay' ###
   10  
   11  
   12: *** Entry 2 *** 05-17-2021 07:00:17
   13  *** ID: 49236843 ***
   14  *** PN: 3315185-000 ***
   ..
   16  *** Conclusions-Description: ***
   17  
   18: ### Error in MTI command ###
   19  
   20  
   21: *** Entry 3 *** 05-17-2021 07:01:48
   22  *** ID: 48729163 ***
   23  *** PN: 3315185-004 ***
   ..
   25  *** Conclusions-Description: ***

正则表达式中的方括号表示“从里面的字符列表中恰好找到一个”所以 ^[abc].* 表示“从行的开头,恰好找到后面的字符 a、b 或 c 之一零个或多个其他字符”。所以 ^[(###|*** Entry)].* 的字面意思是“从行的开头,恰好找到方括号中列出的字符之一,然后是更多的任何字符”——这几乎匹配文件中的每一行。

但是,^(###|\*\*\* Entry).*(没有方括号)意味着“从行的开头,找到 ###*** Entry 后跟零个或多个字符” - 你需要反斜杠,因为星号有特殊含义。然后它将括号内的部分放入子组 1,因此如果您不需要子组,您可以使用非捕获版本:^(?:###|\*\*\* Entry).*

您可以在此处查看 ^(?:###|\*\*\* Entry).* 的实际效果:https://regex101.com/r/4aC1d0/1