仅当字符串中的字符多次出现时才匹配字符串中字符的最后一次出现

时间:2018-04-19 15:21:22

标签: regex regedit

我想用RegEx做标题sais。 因此,让我们举一个简单的例子:假设我们要删除文件名扩展名(包括点字符),但仅限于名称中包含点字符的文件。鉴于此示例列表:

this-is-a-filename-we-dont-change.doc
this.is.a.filename.we-will-change.doc
this_is_a_filename_we_dont_change.doc

由于第二个文件的文件名中有一个(或多个)点,我们希望仅对该行.doc进行匹配。

我从简单的.[^.$]*$开始,但有两个问题:

  1. 如果我们有空行
  2. ,它将换行
  3. 它也会匹配其他文件名,而不仅仅是第二个
  4. 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以将此正则表达式与否定字符类一起使用:

\.[^.\n]*\K\.[^.\n]+$

RegEx Demo

[^.\n]将匹配非点而不是换行符的字符。

\K用于重置PCRE中的匹配信息。