正则表达式,用于匹配除数字和定义的单词以外的任何字符

时间:2019-05-09 16:59:08

标签: regex regex-negation regex-lookarounds regex-group regex-greedy

我正在尝试使用支持regex的Advanced Renamer批量重命名我的文件。

我想匹配所有字符以排除那些字符并创建一个新的文件名,但是要保留情节数和特定词以区分例如OVA的常规情节。

我尝试了\D[^OVA]和其他类似的设备,但是没有用:

  

猎人x猎人02 = 02

     

猎人x猎人OVA 08 = OVA 08

     

猎人x猎人OVA贪婪岛决赛01 = OVA岛01

1 个答案:

答案 0 :(得分:1)

我猜您希望排除OVA和所有数字。然后,this expression可能会帮助您这样做或设计一个:

([^OVA0-9]+)*

enter image description here

此图显示了表达式的工作方式,您可以在此link中可视化其他表达式:

enter image description here


如果您希望添加要排除的单词列表,this expression可以这样做:

([\S\s]*?)([0-9]+|OVA|Any|Thing|Else|That|You|Like)

您可以使用 | 排除任何其他单词。

enter image description here

RegEx描述图

enter image description here

JavaScript测试

const regex = /([\S\s]*?)([0-9]+|OVA|Any|Thing|Else|That|Like)/gm;
const str = `Hunter x Hunter VOA Greed Island Final 01 = OVA Island 01`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}