2 Stimmen

Regex-Filter zur Eliminierung von Datensätzen mit alphanumerischen Zeichen vor dem Buchstaben "I"

Benötige Hilfe bei der Eingrenzung des Bereichs dieser Regex, um keine Datensätze zurückzugeben, wenn ein alphanumerisches Zeichen vor dem ersten "I" steht

"I([ ]{1,2})([a-zA-Z]|\d){2,13}"

Sie möchten I APF von dieser Zeichenfolge erfassen, aber nicht I ARPT.

I APF                     'NAPLES MUNI ARPT.            ' 42894 JEB 29785584 

Danke!

5voto

Gareth Punkte 123487

\b steht in regulären Ausdrücken für eine Wortgrenze, so dass das Folgende funktionieren sollte (vorausgesetzt, Sie sind mit dem Rest der Regex zufrieden):

("\bI([ ]{1,2})([a-zA-Z]|\d){2,13}")

Eine Wortgrenze ist definiert als das Leerzeichen mit der Breite Null zwischen einem Wortzeichen und einem Nicht-Wortzeichen. Abhängig von Ihrer Regex-Engine ist ein Wortzeichen wahrscheinlich ein alphanumerisches Zeichen oder ein Unterstrich, so dass die Verwendung von \b wird mit I ALF in -I ALF aber nicht in _I ALF

2voto

Ned Batchelder Punkte 342778
\bI[ ]{1,2}[A-Za-z0-9]{2,13}

1voto

PhiLho Punkte 39496

Das Wort "Grenze" scheint eine gute Lösung zu sein. Sie haben uns nicht gesagt, welche Regex-Engine/Sprache Sie verwenden werden: JavaScript hat zum Beispiel kein look-behind.
Und wie bereits erwähnt, ist Ihr Ausdruck ein wenig zu kompliziert (was der Geschwindigkeit schadet).
Meine Version würde lauten:

\bI  ?[A-Za-z\d]{2,13}

Je nach Bedarf mit oder ohne Erfassungen. Vielleicht möchten Sie den Ausdruck beenden mit \b um sicherzustellen, dass nach dem Ausdruck keine alphanumerischen Zeichen mehr stehen.

0voto

Tom Haigh Punkte 56080

Sie könnten versuchen, einen negativen Rückblick zu machen:

(?<![a-zA-Z0-9])I([ ]{1,2})([a-zA-Z]|\d){2,13}

Ich bin mir allerdings nicht sicher, wie weitreichend das funktionieren wird (d.h. mit verschiedenen Regex-Bibliotheken)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X