Как использовать шаблон REGEX, чтобы удалить определенное слово «THE», только если в начале текстовой строки? - PullRequest
1 голос
/ 16 октября 2010

У меня есть поле ввода текста для заголовков различных вещей и чтобы минимизировать ложные отрицания в результатах поиска (внутренний поиск не самый лучший), мне нужно иметь шаблон REGEX, который просматривает первые четыре символа входной строки и удаляет слово (и пробел после слова) _the _, если оно присутствует только в начале.

Например, если мы говорим об именах групп, и кто-то вводит The Rolling Stones , мне нужно, чтобы запись сказала только Rolling Stones

Можно ли использовать регулярное выражение для автоматического удаления этих 4 символов?

Ответы [ 3 ]

3 голосов
/ 17 октября 2010

Применение регулярного выражения

^(?:\s*the\s*)?(.*)$

будет соответствовать любой строке и захватывать ее в обратной ссылке №.1, если только он не начинается с the (необязательно окружен пробелами), в этом случае backref no.1 будет содержать все, что следует.

Вам нужно установить параметр учета регистра в вашем модуле регулярных выражений, чтобы это работало.

3 голосов
/ 16 октября 2010

Вы можете использовать идентификатор ^ для сопоставления с шаблоном в начале строки, однако для того, для чего вы его используете, это может считаться избыточным.

Многие языки поддерживают манипуляции со строками, что является более подходящим выбором. Я могу привести пример для демонстрации на Python,

>>> def func(n):
    n = n[4:len(n)] if n[0:4] == "The " else n  
    return n

>>> func("The Rolling Stones")
'Rolling Stones'
>>> func("They Might Be Giants")
'They Might Be Giants'
1 голос
/ 17 октября 2010

Поскольку вы не уточняете с языком, вот решение на Perl:

my $str = "The Rolling Stones";

$str =~ s/^the //i;

say $str; # Rolling Stones
...