В общих чертах я хочу найти в строке некоторую подстроку, но только если он там содержится.
У меня было выражение:
^.*(\bpass\b)?.*$
И тестовая строка:
high pass h3
Когда я проверяю строку с помощью выражения, я вижу, что вся строка найдена (но группа «не проходит»):
match : true
groups count : 1
group : high pass h3
Но что мне нужно, это то, что матч имеет 2 группы: 1: фильтр высоких частот h3 2: pass
И когда я тестирую, например, строку - high h3, у меня все еще была найдена 1 группа - high h3
Как я могу это сделать?
Точка соответствует только одному символу, поэтому вы
^.(\bpass\b)?.$
совпадают:
, который я совсем не ожидал бы сопоставить с «high pass h3».
Регулярное выражение:
pass
(без метасимволов) будет соответствовать любой строке, содержащей «pass» (но тогда и функция «найти строку в строке», и это, вероятно, будет быстрее без сложности регулярного выражения).