2009-06-10 19 views
0

この正規表現が最後の文字として_アンダースコアを持つ文字列も返すことができますか?正規表現が期待どおりに機能しない

大文字と小文字が混在したアルファベットの文字列のみを返す必要があります。

However, the regular expression returns: 'action_'

$regEx = '/^([a-zA-Z])[a-zA-Z]*[\S]$|^([a-zA-Z])*[\S]$|^[a-zA-Z]*[\S]$/'; 
+1

あなたは式で何を達成しようとしていますか? –

+0

\ Sが角括弧の中に表示されるのはなぜですか? 2つの文字「\」と「S」を含む文字クラスを定義していませんか? – Benson

+3

これは奇妙なREです:3つの選択肢があり、2番目と3番目の選択肢はまったく同じですので、3番目の選択肢は決して一致しません。可能であれば、2番目の選択肢はすでに一致しているからです。 また、([a-zA-Z])*部分が何も一致しない場合にのみ、第2の代替案が一致します。 –

答えて

2

[\S]は、アンダースコアを含む、空白ではないすべてのものにマッチします。


また、あなたの表現は非常に奇妙です!

文字のみを含む文字列を使用する場合は、^[a-zA-Z]*$または^[a-zA-Z]+$(空白が許可されているかどうかによって異なります)を使用します。

あなたが何か他のことをしようとしている場合は、それを拡張する必要があります。

+1

/s小文字は空白を意味します – Brabster

+0

ほとんど。 \ s小文字は空白を意味します - スラッシュの方向に注意してください。 –

+0

ごめんなさい!面白いモバイルキーボードのレイアウト! – Brabster

5

\ Sは、 "いない空白文字" を意味\ Sは一致しているので_

あなたはそれがある可能性があり、ということを意味した場合のグループは、しかしアンダースコアを持って、そうではないはずです最初のグループだけでなく、全体の試合を戻しています。

正規表現を使用して、必要に応じてそれを明確にする方法を示してください。

0

\ Sは、任意の非空白文字にマッチする - これ_

0

テキストとその部分を抽出して表示する必要があります。 正規表現はあなたのように大きくすべきではありません。

小規模なバッチで作業...このサイズでは、あなたを助けるのが非常に困難です。

関連する問題