Hilfe zum regulären Ausdruck für Kartennummern

Hilfe zum regulären Ausdruck für Kartennummern

Ich habe den folgenden Befehl+REGEX verwendet, um alle Dateien aufzulisten, die Kartennummern in einem Dateisatz enthalten.

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

Ich habe diesen REGEX in einer anderen Anwendung getestet und er war erfolgreich.

Antwort1

Einfaches Grep verwendet einfache reguläre Ausdrücke. Ihr regulärer Ausdruck verwendet -dund ?und , {m,n}die nicht erkannt werden.

Sie möchten grep -E, aber das kann nicht erkennen \d. Wenn nicht ändern Sie es in[0-9]

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

Oder verwenden Sie grep -Pperl-kompatible reguläre Ausdrücke

Referenz:https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html

verwandte Informationen