如何在替换角色之前重复捕获

问题描述 投票:1回答:1

我花了最近两天的时间来找到一个正则表达式,用左下角替换每个点。

表达式是:

name.of.the.film.(year).codec.quality. ... .extension

其中:

  • (year)匹配\((\d){4}\)
  • name.of.the.film.匹配([^.]+\.)+(可能是name.of.name.of.the.film.name.of.the.film.

我试过^(([^.]+(\.))+)\(我能够捕捉括号前的最后一点,因为据我所知,重复捕捉只保留最后一场比赛。但是如何捕捉每一个点匹配。

[编辑]如下面的评论中所述,表达式中可能出现几个左括号。我必须在第一个左括号之前替换点。

regex replace regex-group
1个回答
0
投票

这应该符合您的要求:

/[.](?=.*\()/g

一个点,后跟任何以左括号终止的字符串的正向前瞻。

替换演示:https://regex101.com/r/PEur1t/1

编辑:如果括号中出现多次字符串,这可能无法给出预期的结果,因为它会将每个点替换为最后一个左括号。因为在没有任何其他假设的情况下,不太可能成功地理解哪一个是期望的那个,我现在假设年份将是一个四位数的字符串:

/[.](?=.*\(\d{4})/g

但是:ぁzxswい

© www.soinside.com 2019 - 2024. All rights reserved.