用于删除百分比的正则表达式

use*_*655 5 regex perl

您好,我真的很感谢您在形成一个从字符串末尾删除百分比的正则表达式时得到一些帮助:

Film name (2009) 58%  ->  Film name (2009)
Film name (2010) 59%  ->  Film name (2010)
Run Code Online (Sandbox Code Playgroud)

该字符串可能有也可能没有括号内的年份。在括号年份之前,电影名称可能是字母数字并且有多个单词。

我正在使用“批量重命名实用程序”,因此希望填写“匹配”和“替换”字段。

我能想到的最好的办法是:

([A-Z][a-z]*) \((\d*)\) (\d*\%) -->  \1 (\2)
Run Code Online (Sandbox Code Playgroud)

虽然这似乎只适用于单字电影名称,并且丢失了括号,所以我不得不重新添加!

我用谷歌搜索过,每次我尝试可能的表达式时,它在“批量重命名实用程序”中不起作用,我相信它是基于 pcre(批量重命名实用程序)的。

Gab*_*ber 3

为了避免更换错误的东西,请执行以下操作

\b(100|\d{1,2})%\b
Run Code Online (Sandbox Code Playgroud)

并用任何东西替换它。

它停在字边界处(即 30% 可以,但 w30% 不行)并且仅获取 100 或 0-99 数字。

编辑:

如果 % 是字符串的最后一个字符,那么您可以获得更好的结果

\b(100|\d{1,2})%$
Run Code Online (Sandbox Code Playgroud)

这样你就只能得到%行尾的 ,避免从电影标题中删除带有 % 的数字。

如果字符串是文件名并且您需要替换它并且您不能只删除图块的一部分,您可以这样做

(.+?)(100|[0-9]{1,2})%$ #I think using 0-9 is accepted by more languages
Run Code Online (Sandbox Code Playgroud)

并替换为

$1
Run Code Online (Sandbox Code Playgroud)

\1并且\2不应该在替换表达式中使用。它们是与第一个和第二个捕获匹配的正则表达式模式。$1$2是包含第一个和第二个捕获匹配的内容的变量,因此您应该使用它们。