Как исключить строки где встречается DLC между версией и годом? (Регулярные выражения)
Между версией и годом может быть абсолютно что угодно, или же может вообще ничего не быть, и неизвестно где там встретится слово DLC поэтому я использовал .* но из за этого, строки в которых встречается слово DLC не исключились...
Ответы (1 шт):
Вы можете использовать
(\d+(?:\.\d+)*)(?:(?!DLC).)*?\((\d{4})\)(?:\s*PC)?
См. пример работы регулярного выражения. Тут .* заменено конструкцией (?:(?!DLC).)*, т.е. так называемой "ограниченной точкой" (англ. "tempered dot", "tempered greedy token"). .* находит ноль и более (как можно больше) любых символов, отличных от символов перевода строки, тогда как (?:(?!DLC).)*? находит ноль и более повторов любого символа, отличного от символов перевода строки, как можно меньшее количество раз, который не является начальным символов подстроки DLC.
Подробности
(\d+(?:\.\d+)*)- Подмаска №1: одна и более цифр, а затем ноль и более повторов точки + одной и более цифр(?:(?!DLC).)*?- любой текст, до первого вхожденияDLC\(- символ((\d{4})- Подмаска №2: четыре цифры\)- символ)(?:\s*PC)?- опциональная последовательность ноля и более пробельных символов, а затемPC.
