Как обрезать существующие пробелы в конце строки, используя регулярное выражение? - PullRequest
0 голосов
/ 24 апреля 2020

Добрый день! Я новичок и изучаю регулярные выражения. В настоящее время я профилирую данные и исключаю грязные данные в нашей системе. Теперь мне трудно удалить конечные пробелы, я не знаю, какую встроенную функцию я должен использовать, чтобы устранить это. Если я поставлю \ h, он не будет захватывать пробел, но если я использовал \ s, он захватит пробел, но в конце строки у него будет завершающий пробел.

Это мое Регулярное выражение, протестированное на regexp.com

\b((\d{1,}[\s|\-]+){1,3}\d{1})\b

введите описание изображения здесь

Формат, который я хочу захватить:

Format1- ####-#######-# 
Format2- #### ####### #
Format3- ##-#######-#
Format4- ## ####### #
Format5- ########## ({10,12} digits)

1 Ответ

0 голосов
/ 24 апреля 2020

Если вы хотите соответствовать этим форматам, вы можете выбрать 2 или 4 цифры. Захват, совпадающий с пробелом или - в группе, и использование обратной ссылки на то, что записано в этой группе, чтобы сохранить разделители одинаковыми (поэтому не совпадать с пробелом и - в том же формате)

Обратите внимание, что \s также может соответствовать символу новой строки. Если вы хотите сопоставлять только пробелы, вы можете добавить это вместо этого.

\b(?:(?:\d{4}|\d{2})([- ])\d{7}\1\d|\d{10,12})\b

По частям

  • \b Граница слова
  • (?: Без захвата группа
    • (?:\d{4}|\d{2}) Совпадение с 4 или 2 цифрами
    • ([- ]) Захват группа 1 , сопоставление либо - или пробел (используйте \s для сопоставления пробелов char)
    • \d{7}\1\d Совпадение 7 цифр, обратная ссылка на группу 1 (совпадает с тем же символом, что и предыдущий), за которым следует последний ди git
    • | или
    • \d{10,12} Матч 10 - 12 цифр
  • ) Закрыть группу
  • \b Граница слова

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...