如何在记事本++上使用正则表达式只保留特定的字符串

How to keep only a particular string using regex on notepad++

我试图在 notepad++ 上使用正则表达式保留一些数据,但找不到正确的正则表达式来执行此操作:

这是我的数据:

Procédure PL/SQL terminée.

950806067 26950073200020 NON EXISTANTE - INSERTION EFFECTUEE - ID ROR : 199348

Procédure PL/SQL terminée.

950808519 38301912200019 NON EXISTANTE - INSERTION EFFECTUEE - ID ROR : 199349

好吧,我只想保留“:”之后的数字,即“19....”

其实,我知道如何删除这个字符串19\d+$,但我不知道如何保留它。我尝试使用 [^19\d+$] 和其他表达式,但没有任何效果。有点复杂。

只需使用简单的查找和替换:

查找:

Procédure PL/SQL terminée.(?:\r\n?|\r)(?:\r\n?|\r).*?ID ROR : (\d+)(?:\r\n?|\r)?

替换:


输出:

209348
199349

您可以通过 1 个正则表达式替换来实现:

.*\h(19\d+$\R?)\R*|.+\R*

并替换为


详情:

  • .*\h(19\d+$\R?)\R* - 尽可能多的任意 0+ 个字符 (.*) 直到最后一个水平空格 (\h),然后是 19 + 一个或行尾的更多数字 (\d+) ($) + 可选的换行符 (\R?)(被捕获到第 1 组)后跟 0+ 换行符 ( \R*)
  • | - 或
  • .+\R* - 除换行符外的任何 1+ 个字符后跟 0+ 换行符

替换模式仅包含对第 1 组(</code> 或 <code>)的反向引用,这会将第 1 组的内容重新插入到生成的文本中。其余的将被删除。