RegEx для сопоставления любого символа, кроме чисел и определенных слов - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь переименовать мои файлы в пакетном режиме, используя Advanced Renamer, который поддерживает regex.

Я хочу сопоставить все символы, чтобы исключить их, и создать новое имя файла, но сохранить количество эпизодов и специфических слов, чтобы отличать обычные эпизоды, например, от OVA.

Я пробовал \D[^OVA] и другие подобные, но ничего не работает:

Охотник х Охотник 02 = 02

Охотник х Охотник ОВА 08 = ОВА 08

Hunter x Hunter Финал острова жадности OVA 01 = Остров OVA 01

1 Ответ

1 голос
/ 10 мая 2019

Я предполагаю, что вы хотите исключить OVA и все ваши номера. Тогда это выражение может помочь вам сделать это или спроектировать:

([^OVA0-9]+)*

enter image description here

Graph

Этот график показывает, как будет работать выражение, и вы можете визуализировать другие выражения в этой ссылке :

enter image description here


Если вы хотите добавить список слов для исключения, это выражение может сделать это:

([\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}`);
    });
}
...