Я пытаюсь проверить столбцы базы данных в PostgreSQL на наличие специальных символов, пробелов (более одного пробела), дополнительных вкладок и возврата каретки. Идея для меня состоит в том, чтобы найти специальные символы, такие как (например, +, " ",`, /,' и т. д.). Я хочу подсчитать, сколько вхождений этих значений. Я новичок в PostgreSQL и регулярных выражениях.
Пример,
roadmap/plan
Smith, Tom (2 spaces after Tom)
applicant's
see me (tab)
Q4 2024
FY2024+
До сих пор я пробовал следующий SQL, чтобы найти эти значения.
select col1 from table_name
where col1 ~* '[^A-Za-z0-9&\(\)\| \''.-\\s*\s*|\s+y\s+]+';
Тем не менее, я получаю записи, которые меня не волнуют, например, если есть файл . характер.
Пример,
Dr. Tom Smith
Я также пробовал:
select col1 from table_name
where col1 ~* '[^A-Za-z0-9^\\''\-#+~_\t\r]';
Я все еще получаю записи, которые меня не волнуют:
Пример,
Q4 2024
Tom Smith
Мои критерии найти:
Что мне не хватает или нужно убрать из регулярного выражения?
Да, я пытаюсь найти специальные символы, такие как [', " ",#,%, \, ~, +, `(обратная галочка), $, <,>, {},|,@]. Я также ищу возврат каретки, дополнительные вкладки, пробел между словами и
Пробелы допускаются, поэтому поместите их в свой класс персонажей, но добавьте проверку на двойные пробелы:
where col1 ~* '[^A-Za-z0-9^\\''\-#+~_\t\r\n ]|\\s\\s+';
Я все еще получаю результат, который содержит записи, у которых нет проблем. Я попытался удалить AZ AZ 0-9, потому что я просто хочу найти выбросы.
Пожалуйста, покажите примеры значений, которые не имеют проблем, но совпадают?
попробуйте добавить \n
к регулярному выражению. Я изменил ответ.
Я вижу имена без лишних пробелов или других проблем. Я хочу получить только те записи, которые содержат запрещенные специальные символы или проблемы, перечисленные выше в моем вопросе. Смит, Трой Джули Райан
Обычно специальными символами ASCII являются
[!"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~]
или сокращенно[!-/:-@\[-`{-~]
вы пытаетесь сопоставить их?