Regex mit Wortgrenze, aber Wort endet mit a. (Zeitraum)

8

möchte das Wort i.v. case insensitive

zuordnen

habe Muster

%Vor%

aber wollen eine Wortgrenze am Ende
Das obige Muster schlägt fehl, da es zu
passt i.v.x

aber wenn ich versuche, eine Arbeitsgrenze zum Ende hinzuzufügen

%Vor%

es scheitert darin, dass es nicht einmal i.v. wie ich denke, das \b isst das wörtliche. wie . ist ein Wort brechen
brauche \. , um gierig zu sein

Ich möchte mit mir übereinstimmen sam i.v. sam

möchte nicht mit einem übereinstimmen sam.i.v.
i.v.sam

Das kommt näher

%Vor%

Aber es findet nicht i.v. am Ende einer Zeile

    
paparazzo 01.08.2013, 21:29
quelle

3 Antworten

16

\b stimmt nur zwischen einem alphanumerischen Zeichen und einem nicht alphanumerischen Zeichen (oder dem Anfang / Ende eines Strings) überein. Daher stimmt es nach einem . nicht überein, es sei denn, ein alphanumerisches Zeichen folgt unmittelbar auf diesen Punkt.

Wenn Sie sicherstellen möchten, dass nach dem Punkt kein Leerzeichen folgt, können Sie dies mithilfe einer angeben negative Vorausschau Behauptung :

%Vor%

(?!\S) bedeutet "Stellen Sie sicher, dass das nächste Zeichen kein Nicht-Leerzeichen ist".

Das mag ein bisschen verschlungen klingen - warum das doppelte Negativ? Warum nicht (?=\s) was bedeutet "Stellen Sie sicher, dass das nächste Zeichen ein Leerzeichen ist"? Nun, es gibt einen feinen Unterschied: Die zweite Version benötigt ein Leerzeichen, um dort zu sein; das bedeutet, dass die Regex am Ende der Zeichenfolge nicht übereinstimmen würde. Der erste Regex behandelt auch diesen Eckfall.

Wenn das Konzept der "Wortgrenze" generell "space-limited" bedeutet, dann müssen Sie auch die erste \b ersetzen:

%Vor%

oder der Regex passt zu sam.i.v. , was Sie nicht zu haben scheinen.

    
Tim Pietzcker 01.08.2013, 21:59
quelle
2

Über Ihre aktuelle Regex:

Sie müssen nicht \b nach Punkt haben, da dot nicht als Wortzeichen betrachtet wird, aber natürlich muss der Punkt maskiert werden:

%Vor%

Aber Sie benötigen \b vor i , um sicherzustellen, dass es z. B. nicht übereinstimmt. hi

BEARBEITEN: (basierend auf Ihren weiteren Änderungen)

Probieren Sie diese Regex:

%Vor%     
anubhava 01.08.2013 21:32
quelle
-1

Sie scheinen mit Wortgrenzen und gierigen Vorstellungen sehr verwirrt zu sein. Am besten gehen Sie zu diesen Adressen:

  • Was ist ein gieriger Quantifizierer:

Ссылка

  • was ist eine Wortgrenze:

Ссылка

Wenn Sie diese Erklärungen lesen, werden Sie sicher denken, dass Ihr Problem lächerlich war.

    
Casimir et Hippolyte 01.08.2013 21:40
quelle

Tags und Links