Помощь с регулярным выражением номера карты

Помощь с регулярным выражением номера карты

Я использовал следующую команду+REGEX для получения списка всех файлов, содержащих номера карт в наборе файлов.

grep -r -l -e '[3-6]\d{3}([\ \-]?)\d{4}([\ \-]?)\d{4}([\ \-]?)\d{3,4}' *

Я протестировал это REGEX в другом приложении, и все прошло успешно.

решение1

Plain grep использует базовые регулярные выражения. Ваше регулярное выражение использует -dи ?и {m,n}которые не распознаются.

Вы хотите grep -E, но это может не распознать \d. Если нет, измените его на[0-9]

grep -Erle '[3-6][0-9]{3}([ -]?)[0-9]{4}([ -]?)[0-9]{4}([ -]?)[0-9]{3,4}' *

Или используйте grep -Pдля использования совместимых с Perl регулярных выражений

Ссылка:https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html

Связанный контент