用于捕获以“###”或“*** 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
我有大文件,每个文件包含很多行,有些行以一系列字符为前缀,例如:
*** 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