Regex - обязательное наличие символов в некоторой подстроке
Есть такая задача: в базе есть строки, оканчиваются схожим образом, примерно так: Т20NE99, P678SE, L99В0 и т.п. То есть эти строки могут быть разной длины, но находятся всегда в конце и отделяются от остальной части пробелом. В некоторых из подобных подстрок вместо английских символов записаны русские, мне нужно отыскать, где именно и отредактировать их. Написал такую регулярку: [ТМРВЕКХСАA-Z0-9]+$, но потом вспомнил, что в квадратных скобках символы ищутся через ИЛИ, то есть русские символы могут как существовать, так и нет, и этот вариант, разумеется, не подходит. Не могу припомнить, как можно указать, что какие-то символы должны присутствовать в подстроке обязательно? В данном случае - русские символы ТМРВЕКХСA, имеющие английские аналоги.
Ответы (2 шт):
Если русских букв вообще не должно быть, то я бы искал просто
[ТМРВЕКХСA]
Если русские буквы в принципе бывают, но надо проверить их наличие в последних 7 символах:
[ТМРВЕКХСA].{0,6}$
Если надо ещё и строки, оканчивающиеся определёнными символами при этом найти, то (с квадратичной асимптотикой поиска):
(?=.*[ТМРВЕКХСA])[ТМРВЕКХСАA-Z0-9]{1,7}$
Используйте
[\u0422\u041C\u0420\u0412\u0415\u041A\u0425\u0421\u0410](?=\S*$)
[ТМРВЕКХСА](?=\S*$)
См. пример использования выражения.
[ТМРВЕКХСА]- букваТ,М,Р,В,Е,К,Х,Сили А`(?=\S*$)- от текущей позиции и до конца строки должно быть 0 и более непробельных символов.