Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在记事本++;_Regex_Notepad++_Regex Negation - Fatal编程技术网

Regex 如何在记事本++;

Regex 如何在记事本++;,regex,notepad++,regex-negation,Regex,Notepad++,Regex Negation,我试图使用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 - I

我试图使用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)?
$1
209348
199349
替换:

Procédure PL/SQL terminée.(?:\r\n?|\r)(?:\r\n?|\r).*?ID ROR : (\d+)(?:\r\n?|\r)?
$1
209348
199349
输出:

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

您可以通过更换一个正则表达式来实现这一点:

.*\h(19\d+$\R?)\R*|.+\R*
并替换为

\1
详细信息

  • *\h(19\d+$\R?)\R*
    -尽可能多的任何0+字符(
    *
    )直到最后一个水平空白(
    \h
    ),然后在行尾(
    $
    )后跟
    19
    +一个或多个数字(
    \d+
    )+可选的换行符(
    \R
    )(捕获到组1中)后跟0+换行符(
    \R*
  • |
    -或
  • +\R*
    -除换行符以外的任何1+字符,后跟0+换行符
替换模式仅包含对组1的反向引用(
\1
$1
),该引用将把组1的内容重新插入到结果文本中。其余的将被删除

@TimBiegeleisen:好吧,我只想保留“:”后面的数字,也就是“19…”。无论如何,删除
19
,您将在最后一个空格后的字符串末尾获得任何数字。