如何使用正则表达式搜索文本中的多行并按顺序查找

如何使用正则表达式搜索文本中的多行并按顺序查找

尝试找出 Notepad++ 中要使用的正则表达式,在其中我可以搜索下面的文本(作为示例)并按顺序找到结果。

示例文本:

{ USERECOVERDB 1 }

protocol to_nuance_orm_p5 {
{ AUTOSTART 1 }
{ DELAYCONNECT 0 }
{ HOST 198.92.118.168 }
{ IPV4_V6_DUAL 0 }
{ PDLTYPE tcp-client }
{ PORT 9014 }
{ PRIVATE_KEY {} }

期望结果:

protocol to_nuance_orm_p5
HOST 198.92.118.168
PORT 9014

答案1

以下正则表达式应该有效:

protocol [^ ]+|HOST \d+\.\d+\.\d+\.\d+|PORT \d+

我正在使用 Sublime Text 来测试它,但它也应该可以在 Notepad++ 中运行。

它的工作原理如下:它由三部分组成:

  • protocol [^ ]+
  • HOST \d+\.\d+\.\d+\.\d+
  • PORT \d+

|符号表示其中任何部分都可以匹配。

第一部分: protocol [^ ]+

protocol(包括后面的空格l)只是匹配单词protocol和后面的空格。[^ ]匹配一个非空格字符并+意味着匹配一个或多个前面的符号,因此[^ ]+将匹配一个或多个非空格符号。

第二部分: HOST \d+\.\d+\.\d+\.\d+

HOST与第一部分一样匹配文本。然后是\d匹配一位数字且+含义与上述相同的字符。\.将匹配常规点。与字母不同,点前面必须加反斜杠,因为它在正则表达式中具有特殊含义。

第三方比第二个更简单,所以我认为不需要解释。

如果你想了解更多关于正则表达式的知识,本教程非常好,这是一个很好的正则表达式测试器/调试器

答案2

如果您只想查找以下格式的所有文本:

** TEXT ** 

尝试这个:

\*\*.*\*\*

相关内容