2016-04-18 15 views
2

が、私は小さな正規表現を作成し、すべてが一致しない場合:は、文字列内のいくつかの変数名を見つけるために主要な数字

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

を私の場合は、変数は、整数や文字+下線文字を持つことができます数字で始めるべきではありません。それは前に246を残し、myVariableName25と一致します

"whateverTextBefore,246myVariableName25" 

問題は、この文字列のことです。私はこれとまったく同じではないと思います。

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

が先行番号を指定しない場合は、私は同じ結果を得る:

は、私もこのパターンを試してみました。

先頭に数字がある場合は、このRegExの作業をまったく拒否するようにするにはどうすればよいですか?

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

答えて

3

あなたはword boundary \bを使用することができます。例では、それは前にカンマですが、それは他の人の間で任意の特定の文字である可能性があり

注意。

Demo

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

はまた、 [a-zA-Z0-9_]\wに置き換えることができることに注意してください。

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

Demo

単一のアルファベットを可能にするために、+数量詞は*に置き換えることができます。

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

すごい!ありがとう、私は言葉の境界について知りませんでした。私はそれが理解しやすいと思うので、私は長いバージョンを維持します。 – dyesdyes

0

これを使用してください。

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

デモ:それは複数の結果を一致するようhttps://regex101.com/r/eU4nP1/1

g修飾子を忘れないでください。すべての言語には修飾語を追加する方法があります。これはPHP用です。

,を除外することを忘れないでください、それが結果に含まれます。

+0

これは等価ではありません、私は質問では、コンマである必要はありません、それは任意の特殊文字 – dyesdyes

関連する問題