2016-04-18 9 views
2

ich eine kleine RegEx um einige Variablennamen in einem String finden erstellt:überhaupt nicht übereinstimmen, wenn führende Zahlen

([a-zA-Z][a-zA-Z0-9_]+) 

In meinem Fall kann eine variable ganze Zahlen und Buchstaben haben + das Unterstreichungszeichen, aber es sollte nicht mit einer Nummer beginnen.

Das Problem ist, dass in dieser Zeichenfolge:

"whateverTextBefore,246myVariableName25" 

Es myVariableName25 übereinstimmen, bevor die 246 verlassen. Das möchte ich gar nicht zusammenbringen.

habe ich versucht, dieses Muster zu:

([^0-9]*[a-zA-Z][a-zA-Z0-9_]+) 

keine führende Nummer angeben, aber ich das gleiche Ergebnis.

Also, wie kann ich diese RegEx funktionieren lassen, um Spiele überhaupt abzulehnen, wenn es führende Nummern gibt?

Beachten Sie, dass in dem Beispiel, es ist ein Komma vor, aber es könnte ein spezifischer Charakter sein, unter anderem:

,.<>/?:;'"[]{})(-+= 

Antwort

3

Sie word boundary \b verwenden können.

\b([a-zA-Z][a-zA-Z0-9_]+)\b 

Demo

Beachten Sie auch, dass [a-zA-Z0-9_] durch \w ersetzt werden kann.

\b([a-zA-Z]\w+)\b 

Demo

Um durch * ersetzt ein einzelnes Alphabet, + quantifier erlauben kann.

\b([a-zA-Z]\w*)\b 
      ^
+0

So schnell! Danke, ich wusste nichts über Wortgrenzen. Ich werde die lange Version behalten, da ich denke, dass es einfacher zu verstehen ist. – dyesdyes

0

Verwenden Sie dies!

/\b([^,0-9]\w*?)\b/g 

Demo: https://regex101.com/r/eU4nP1/1

Vergessen Sie nicht, den g Modifikator so wird es mehrere Ergebnisse entsprechen. Jede Sprache hat eine andere Möglichkeit Modifizierer hinzuzufügen. Dies ist für PHP.

Vergessen Sie nicht, , auszuschließen oder es wird im Ergebnis enthalten sein.

+0

Dies ist nicht gleichwertig, ich habe in der Frage beschrieben, es muss kein Komma sein, es kann jedes Sonderzeichen sein – dyesdyes

Verwandte Themen