1

で最後にグループを除くすべての文字を検索します。 最後のスペースに文字列witout内のすべてのスペースグループを抽出(カウント)します。私の簡単な正規表現私はこの文字列を持っている正規表現

/\s+/g 

で 私はこれらのグループを取得:

this(1)is(2)a(3)test(4) 

私は、文字列がスペースで終わる場合のみ、3つのグループを取得したいので、グループから前後のスペースを除外したいです。 正しいregexpは何ですか?

+1

'\ s +(?!$)' ........ –

+0

@AvinashRaj:http://regex101.com/r/uH3wG0/1 –

+0

'\ h(?!$) '..... :-) –

答えて

1

正規表現の味に応じて、2つの方法を使用できます。

原子団/所有数量はサポートされていない場合は、このような先読みソリューションを使用します。

(?:\s(?!\s*$))+ 

regex demo

主なポイントは、我々だけで続いていない空白と一致していることです参照してください。 0 +その他の空白記号の後に文字列の終わりが続きます((?!\s*$)ルックアヘッドで実行されるかどうかのチェック)。エルス

\s++(?!$) 

を使用another demoを参照してください。原子グループと同等の式は(?>\s+)(?!$)です。

ここでは、\s++パターンに逆戻りすることなくすべての空白を取得した後に文字列位置の終わりをチェックします(最後のスペースの後に文字列の終わりがある場合、完全一致は失敗します)。

また、それは肯定先読み内部に捕捉し、次いでしかし

(?=(\s+))\1(?!$) 

ように後方参照を使用しての助けを借りて、JavaScriptで原子団をエミュレートすることが可能である、this patternは、性能の点で高価です。

関連する問題