2016-06-27 15 views
-2

例列の未知の長さの文字列の末尾からスペースをトリミングする:私は、様々な長さの単語のストリングを有する上記の例の各々において正規表現単語

This is "a" test   
This & test   
This test string-has more words  

。これらの文字列のそれぞれには一連のスペースが続き、それ以降は何もありません。

私のアプリケーションは、正規表現のセクションの周りに()を使用して、必要に応じて一致したパターンのその部分だけを返します。

長さに関係なく、最後のスペースを差し引いて完全な文字列を返す正規表現が必要です。

現在の値は(.*)\s{1,}$|(.*\S)$ 文字列の最後に0個のスペースがあり、文字列の最後に1個のスペースがあり、2個以上のスペースがあり、そのスペースが出力に含まれている場合に機能します。

+0

は、スタックオーバーフローへようこそ! [あなたが試したこと](// whathaveyoutried.com)、発生している特定の問題やエラーを表示してください。 [最小、完全、検証可能な例](// stackoverflow.com/help/mcve)を必ず含めてください。 –

+0

私はdownvoted取得していますなぜ私はわからないんだけど...私は自分の携帯電話からの投稿ので、私は最初に私のコードを提供していませんでしたが、私は私の現在の正規表現を追加しましたし、私はまだdownvoted取得しています。 –

+1

あなたは '/.*(?= | $)/'を試すことができます。また、どの言語/ツールを使用していますか? –

答えて

0

説明が小さすぎます。どの言語を使用したいのか分かりませんが、トリムを使用して、文字列の先頭と末尾のスペースを削除することをお勧めします。あなたが使用する正規表現を主張場合は、こちらをご予定のための正規表現です:

/^[^ ][\w\W ]*[^ ]/ 

それは最初とあなたの文字列の末尾から1つ以上のスペースを削除します。
スペース以外の通常の文字をサポートします。さらに制限が必要な場合は、\ w \ Wステートメントを操作することができます。 上記の表現にバグがある場合は、教えてください。

+0

私は小さなものを変えて、パフォーマンスを最高にするために式を再コピーしてください。 – HosSeinM

+0

これはどの言語/コードの一部でもなく、私たちが使用するこのアプリケーションの関数であり、アプリケーションでは正規表現を書くことができるので、トリム関数を使用することはできません。それにもかかわらず、あなたの正規表現は、最初のスペースではなく末尾のスペースを削除するために完璧に動作しますが、それは要件ではないので、私はあなたに答えを与えます。どうもありがとうございます。 –

+0

ありがとうブライアン。空白を最初から削除したくない場合は、式の先頭から[^]を削除するだけです。私は:**/^ [\ w \ W] * [^]/** – HosSeinM

1

あなたはこれを行うには正規表現が必要な場合: ^\s*(\S(.*\S)?)\s*$

は、すべての後続の空白を切断する前に、最後の非空白までの文字の任意の量を食べた後、非空白文字までスペースの任意の量をストリップ。また、単一の文字列を扱います。空の文字列と一致しません。 .*\S

そして、これは、先頭と末尾のスペースの両方を削除します:

0

このコードが動作しているようです\S.*\S

関連する問題