Проблема сводится к сопоставлению слов, которые не начинаются с ABC
. Поскольку слова в вашей строке могут содержать точки и дефисы, которые не являются символами слова, мы, к сожалению, не можем использовать \b
для определения начала слова - вместо этого соответствует предшествующему пробелу (или начало строки) с
(?: |^)
и затем отрицательный прогноз для abc
, и сопоставьте как можно больше слов, точек или дефисов:
(?: |^)(?!abc)[\w.-]*
Затем строчные буквы при каждом полном совпадении.
https://regex101.com/r/QSShDu/1
Пример, для ввода:
Baz Buzz ABCkjkJ.90_1 ABC-12_OLL Foo Bar
вы получите
baz buzz ABCkjkJ.90_1 ABC-12_OLL foo bar
Если часть ABC
всегда находится в начале строки, то это намного проще - просто захватить первое слово в группе, затем захватить оставшуюся часть строки в группе и использовать остальную часть строка:
([\w.-]*)(.+)
заменить на
\1\L\2
https://regex101.com/r/QSShDu/2