2016-05-12 7 views
-1

Я это выяснил несколько месяцев назад и потерял свои заметки. И моя неудачная память не помогает.Regex заменить текст

Скажем, у меня есть строка:

Beverly.Hills.Chihuahua.3.Viva.La.Fiesta!.2012.1080p.BluRay.x264-[YTS.AG] 

, и я хочу, чтобы отфильтровать, что вплоть до

Beverly Hills Chihuahua 3 Viva La Fiesta! 

Что мне нужно сделать? Мне нужно убить последние части, причем в этом году был любой четырехзначный год, и все после этого было постоянным.

+1

С какого языка программирования вы используете регулярное выражение? –

+1

Это действительно входит в какое-то программное обеспечение (MetaX), и я не могу найти ничего, что показывает, что является ожидаемым языком. Это просто настройка в приложении. –

ответ

0

Вот регулярное выражение:

str = Beverly.Hills.Chihuahua.3.Viva.La.Fiesta!.2012.1080p.BluRay.x264-[YTS.AG] 

reg = \(.*\)[[:digit:]]\{4\}\(.*\) 
0

Выражение вы ищете:

/.\d\d\d\d.*/g 

Паттерн:

.\d\d\d\d.* 

В случае, если вы используете Javascript, следующее выражение регулярного выражения, которое вы можете заменить пустым:

text.match(/.\d\d\d\d.*/g); 

Используйте этот link, чтобы скрасить ваше регулярное выражение. Просто удалите деталь взамен, чтобы получить результат.

+0

Но я не пытаюсь сопоставить год. Я пытаюсь удалить все с точки до конца года до конца, а также заменить все оставшиеся точки пробелами. Но меня не волнует эта последняя часть. –

+0

В этой части вы получите все части .xxxx *, которые вы можете заменить пустой строкой. Я думал, что это была сложная часть. –

0

В JavaScript я хотел бы сделать это следующим образом:

var str = "Beverly.Hills.Chihuahua.3.Viva.La.Fiesta!.2012.1080p.BluRay.x264-[YTS.AG]"; 
/(.*)\W?\b\d{4}\b/.exec(str).replace(/\./g, ' ') 

первый экстракт текст, а затем заменить точки одиночными пробелами

Demo

+0

Я тоже думал по тем же линиям. Но, может быть, есть подход, когда мы можем захватывать строки без '.' в отдельных группах за один раз? – CinCout

0

Я пытался за один шаг решение, но не было успешным. Поэтому я упоминаю здесь двухэтапный процесс. Если кто-то может улучшить его, чтобы сделать это за один шаг, это было бы идеальным решением IMO.

Шаг 1: Используйте regex:

((?:(?:[a-zA-Z0-9!]*)\.)*?)\d{4} 

Он захватит строку Beverly.Hills.Chihuahua.3.Viva.La.Fiesta!. в первой группе захвата (demo).

Шаг 2: Теперь вам необходимо заменить . на номер \1space, чтобы достичь желаемого результата.

Смежные вопросы