Regex Удалить статьи из заголовка - - PullRequest
0 голосов
/ 10 ноября 2009

Мне нужно регулярное выражение, которое будет соответствовать первой букве названия песни без таких статей, как «the», «an», «a». Я пишу собственный скрипт импорта для Mediatomb, который использует JavaScript. Мне нужно уметь складывать песни в алфавитные папки.

Пример: «Panama.mp3» будет в папке «P», «The Gambler.mp3» будет в папке «G»

Ответы [ 4 ]

2 голосов
/ 10 ноября 2009

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

(?:(the |a |an ))([a-zA-Z])

Захват 3-й группы, и это всегда должна быть первая буква (исключая ",,,,, ..."

Edit: хотел сказать, захватить Вторую группу для этой первой буквы. Также убедитесь, что вы запускаете это без учета регистра. И получите хороший инструмент для проверки регулярных выражений (мне нравится Expresso, но есть и другие).

Edit2: внесены некоторые уточнения;) (?:(the|a|an) +)?([a-zA-Z0-9])

1 голос
/ 25 января 2017

Пример Javascript -

const regex = /(?:(the|a|an) +)/g; 
const str = `the cat in the hat a hare `; 
const subst = ` `;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

Группа без захвата (? :( | a | an) +)

1-я группа захвата (| a | an)

  1. 1-ая альтернатива "the" соответствует буквам букв (case) чувствительный)
  2. 2-я альтернатива «a» соответствует буквально символу (с учетом регистра)
  3. 3-й вариант "an" соответствует буквально буквам (с учетом регистра)

    • соответствует символу буквально (с учетом регистра)

    • Квантификатор - сопоставляет от одного до неограниченного количества раз, столько раз, сколько возможно, возвращая при необходимости (жадный)

    • г Модификатор: глобальный. Все матчи (не возвращаются после первого матча)

0 голосов
/ 10 ноября 2009
var myregexp = /^(?:(?:the|a|an)\s+)?(\S)/i;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
} else {
    result = "";
}
0 голосов
/ 10 ноября 2009

Благодаря ответу выше, это то, что я придумал. Дайте мне знать, если есть какой-то способ улучшить это.

(?:(the |a |an ))*(\S{1})(\S*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...