在使用正则表达式替换时,如何保留匹配字符串的一部分?

时间:2013-01-22 12:04:35

标签: regex notepad++

我有

12.hello.mp3
21.true.mp3
35.good.mp3
.
.
.

等文本文件中列出的文件名。

我只需要用空格替换数字前面的那些点(。)(例如12.hello.mp3 => 12 hello.mp3)。 如果我将正则表达式作为" [0-9]。",它也会替换数字。 请帮帮我。

2 个答案:

答案 0 :(得分:55)

替换

^(\d+)\.(.*mp3)$

\1 \2

此外,在最近版本的notepad ++中,它也会接受以下内容,其他IDE /编辑也接受这些内容(例如,像Intellij IDEA这样的JetBrains产品):

$1 $2

这假设记事本++正则表达式匹配引擎支持组。正则表达式的基本含义是:将第一个点前面的数字匹配为组1,将其后的所有数字匹配为组2(但仅当它以 mp3 结尾时)

答案 1 :(得分:0)

使用基本模式(在接受的答案中对此有很好的描述)是一个示例,将class="odd"class="even"添加到 Notepad ++ 中的每个<tr>元素中,或者任何其他与regex兼容的编辑器:

查找内容:(<tr><td>)(.*?\r\n)(<tr><td>)(.*?\r\n)

替换为:<tr class="odd"><td>\2<tr class="even"><td>\4