如何使用正则表达式提取文本中的特定行?

以下是一个示例文本:

[ INFO] HW RTC: 2023-05-15 07:21:00

[ INFO] HW RTC timestamp:1684135260

[ INFO] NEXT WAKEUP:7:23, TIMESTAMP:1684135380

[ INFO] CmdName:AT+CPSMS=1,,,"123","123"

现在,我们希望提取特定行(在本例中是带有 "NEXT WAKEUP" 字符串的行),并将其他行删除。我们可以通过在 Notepad++ 编辑器中使用正则表达式实现这一目的。

步骤

以下是将正则表达式应用于该过程的步骤:

打开 Notepad++ 编辑器,打开需要提取数据的文本文件。在 Notepad++ 编辑器中,按下 Ctrl+H 快捷键打开替换窗口。在替换窗口中,选择 "正则表达式" 选项。在 "查找目标" 输入框中填写正则表达式 ^(?!.*NEXT WAKEUP).*$\r?\n? (详细解释见下面)。点击 "替换所有" 按钮。

这样,将删除不包含所需字符串的所有行。在这个例子中,将保留包含 "NEXT WAKEUP" 字符串的那一行。

正则表达式

以下是用于查找并删除文本中不需要的行的正则表达式:

^(?!.*NEXT WAKEUP).*$\r?\n?

该表达式由以下部分组成:

^:以该模式匹配行的开头。(?!.*NEXT WAKEUP):否定预测,匹配与该模式不匹配的任何内容,其中 ".*" 表示零个或多个字符(即不包含 "NEXT WAKEUP" 的任何字符串)。.*:匹配零个或多个字符。\$:匹配行的结尾。\r?\n?: 匹配 Windows 或 Unix 下的换行符。

这个表达式的意思是:匹配任何以换行符结尾的行,其中不包含 "NEXT WAKEUP" 字符串。

示例

以下是应用上述步骤后修改文本的示例:

[ INFO] NEXT WAKEUP:8:53, TIMESTAMP:1684140780

[ INFO] NEXT WAKEUP:8:56, TIMESTAMP:1684140960

[ INFO] NEXT WAKEUP:8:59, TIMESTAMP:1684141140

[ INFO] NEXT WAKEUP:9:2, TIMESTAMP:1684141320

以上就是使用正则表达式提取文本中特定行的方法。 by 杭州禅河智能科技有限公司

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: