2017-01-17 5 views
2

私は、文字列が(スペースでと数字なしで割った)3つの連続した単語が含まれているかどうかを確認しようとしているが、私は構築した正規表現が動作していないよう:正規表現:一致する3つの連続した単語

print re.match('([a-zA-Z]+\b){3}', "123 test bla foo") 
None 

これは、文字列に3つの単語 "test bla foo"が含まれているためtrueを返します。

これを達成する最も良い方法は何ですか?

+0

側の注意点としては:代わりに 're.matchの' re.searchを() 'を使用() ' - 後者は文字列の先頭から始まります。 – alecxe

答えて

5

の操作を行います。

(?:[A-Za-z]+){2}[A-Za-z]+ 
  • (?:[A-Za-z]+){2}:非捕捉グループ(?:[A-Za-z]+)試合スペースに続く1文字以上の英字、{2}試合2つのなどの連続したグループ

  • [A-Za-z]+マッチ一つ以上前の2つの単語の後のアルファベット文字、3番目の単語を作成する

Demo

あなたは言葉だけではなく、空間の任意の空白で区切られたい場合:

(?:[A-Za-z]+\s){2}[A-Za-z]+ 
+0

ありがとうheemayl、これは動作します。私はちょうどこのような何かがうまくいかない理由を理解しようとしています。(?:[A-Za-z] + [\ s \ b]){3} ' – Subbeh

+0

@Subbeh言葉も。 – heemayl

関連する問題