2013-04-30 23 views
6

リンク:http://regexone.com/example/5正規表現 - スタートと行の末尾から空白をトリミング

それは尋ねる:余分な空白なしで、各行の内容をキャプチャするために単純な正規表現を記述します。

私が持っているものは、\ S +の束が混乱していますが、この問題を解決するためのエレガントな方法はありますか?

+3

'^ \ s *(。*)\ s * $'? '\ s *(。*)'はそのテストケースを解決するのに十分です。 – Blender

+0

ここでは、すべての関連データをここに投稿してください。問題を示す例、試したこと、問題がどこにあるのかをここで確認してください。しかし、これはそのページの奇妙なテストケースです。最後には空白がありません。 – stema

+2

この質問について「ローカライズされた」とは何ですか?空白を「一般的に適用されない非常に狭い状況」とみなしていますか?私は再び開くために投票する! –

答えて

6

正規表現を書くことは黒い芸術のように見えるかもしれませんが、実際は非常に単純です。最も重要なステップは、正確に外科手術の正確さであなたがしていることを特定し、一致させたくないということです。

もう一つのヒント:特に.のような「ワイルドカード」の文字と、*または+修飾子を使用して、常に正規表現の一部が、あなたは、おそらく文字列全体に一致する、一致したかった部分「過去を実行する」ことを覚えています。しばしば、最も簡単な解決策は、*?または+?のような嫌な修飾子を使用することです。 (最も一般的な正規表現のバグがかあなたがに望んでいた以上に正規表現マッチあなたがそれを望まなかった作るものである。)この場合

は、あなたが「各行の内容たく、余分な空白なし "それは十分に正確ではありません。 「余分な空白」とは何ですか?末尾の空白は?もしそうなら...

完全に正確で、あいまいな言葉でそれを表現しよう。何が基本的に持っていることは次のとおりです。

  1. (空)空白文字
  2. どちらかの地域: a)に何もありません。 b)空白以外の単一の文字。 c)空白以外の文字で開始および終了する領域。
  3. 空白文字領域(空)

あなたは正規表現としてそれを表現することはできますか?それを試してみて、ここに投稿すると、いくつかのフィードバックがあります。

+0

上記のように、\ s *(。*)はそれをうまく解決しますが、空白とそれ以降のすべてを選択するので正しいとは思いませんか? – sojim

+0

はい、正しくありません。私があなたのために書いた説明(1、2、3)を正しい正規表現に翻訳してみてください。 –

+0

これは私が説明から持っているものです:1. [^ \ s *]? 2.^\ S * $ 3. [^ \ s *]? – sojim

関連する問題