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等,它会这样做,因此最好习惯$
符号。继续读为什么。