Regex 删除记事本++;使用正则表达式

Regex 删除记事本++;使用正则表达式,regex,replace,notepad++,Regex,Replace,Notepad++,我有一个包含许多时间戳的大文本文件。时间戳如下所示:2013/11/14 06:52:38AM。我需要删除其中的最后两个字符(am/pm/am/pm)。问题是,简单地查找并替换“AM”可能会从文件的其他部分(其中包含大量其他文本)删除文本 我使用正则表达式(:\d\d[ap]m)进行了查找,在上面的示例中,它将跟踪时间戳的最后一位::38AM。我现在需要用:38替换它,但我不知道这是如何做到的(允许冒号后面的两个数字的任意组合) 任何帮助都将不胜感激 编辑:我需要的是将(:\d\d)[ap]m替

我有一个包含许多时间戳的大文本文件。时间戳如下所示:
2013/11/14 06:52:38AM
。我需要删除其中的最后两个字符(am/pm/am/pm)。问题是,简单地查找并替换“AM”可能会从文件的其他部分(其中包含大量其他文本)删除文本

我使用正则表达式
(:\d\d[ap]m)
进行了查找,在上面的示例中,它将跟踪时间戳的最后一位:
:38AM
。我现在需要用
:38
替换它,但我不知道这是如何做到的(允许冒号后面的两个数字的任意组合)

任何帮助都将不胜感激


编辑:我需要的是将
(:\d\d)[ap]m
替换为
\1
使
(:\d\d[ap]m)
变成
(:\d\d)[ap]m
并使用
$1
而不是
\1
转到
搜索
替换
菜单(快捷键CTRL+H),并执行以下操作:

  • 查找内容:

    [0-9]{2}\K[AP]M
    
  • 替换:

    [leave empty]
    
  • 选择单选按钮“正则表达式”

  • 然后按
    Replace All

  • 你可以在测试


    注意:使用
    [0-9]
    通常比使用
    \d
    ()更好,并且认为使用
    \K
    时避免使用捕获组
    $1
    。这在您的情况下肯定不重要,但很高兴知道:)

    谢谢您的回复。它使用
    \1
    工作。使用
    $1
    有什么好处吗?或者这只是记事本++的不同功能?我总是使用$1而不是\1,我相信$1是perl的方式?那么\1是ruby吗?还是python?无论如何,如果两者都能工作,酷:)顺便说一句,notepad++正式支持PCRE(Perl),并且文档状态
    $n,${n},\n返回与编号为n的子表达式匹配的内容。不允许使用负索引。
    对于记事本+++
    \1
    $1
    没有区别。但在大多数其他情况下,如Perl、PHP等,它会这样做,因此最好习惯
    $
    符号。继续读为什么。