2017-07-07 15 views
-1

私の場合、n = 2が必要です。n個の単語しか持たないキャプチャ文字列

これを正規表現で行うことはできますか?テキストの文字列にいくつの単語があり、2単語の文字列だけをキャプチャしているかを探します。

例:

this is a test string 
another one 
and another one 

出力:一つだけのスペースが動作するはずがあり、文字列を探して、私は必要なものについては

another one 

、それだけで2ワード(または1でものをキャプチャしています私のやり方は分かりません。

+0

言語?末尾のスペースや先頭のスペースはありますか? 1つの単語列をキャプチャしたくない、正しい? –

+2

空白で区切られた文字のグループだけが「単語」ですか?例えば。 ''これは〜のテストです。 「〜」、「〜」、「〜」、「〜」ですか? – Alexander

+0

@SebastianProskeノートパッド++でこれを行うつもりはありません。私のデータセットafaikに後続/先行スペースはありません。私は1つの単語列を捕まえたくありません。 @アレクサンダーはい。例:10kレース→ "10k" "レース" – Hoju

答えて

2

これほど簡単なことがありますか。

^\w+(?:\s\w+){1}$ 

もっと一般的には、

^\w+(?:\s\w+){N}$ 

ここで、N = n - 1とnは、キャプチャする単語の数です。

+0

ohh Iあなたが単語を探してから、宇宙+単語を探して、最初の単語の後にスペース+単語が1つしかないときにキャプチャするのですか?賢い、ありがとう:D – Hoju

+0

@Alexander残念なことに、オプションのスペースがパターンを壊してしまい、テストケース 'foo'が正しくマッチしません。 –

+0

@TomWyllie hmmm私はそれを手に入れます。ナイスキャッチ。 – Alexander

1

行くための最もリテラルの方法は、アンカーを使用し、スペースで分離された非空白の2つのグループを一致

^\S+ \S+$ 

だろう。

+0

あなたの答えを試してみましたが、\ wは "a-b"とは思えないので、 "a-bテスト"のようなものにマッチさせる必要がある場合は、他のソリューションよりもうまく機能します。したがって、より厳密なソリューションが必要かどうかに応じて、これを使用する必要があります。 2つの答えを受け入れることはできません;) – Hoju

関連する問題