2017-12-09 27 views
1

文字列sがあるとします。 sが次のような特徴を持つ場合、Trueを返す正規表現を使用して関数を記述したいと思います。正規表現と一致する正規表現

  1. 先頭の空白を無視します。
  2. 1文字目のSは、次のaからz、AZ、0-9の0以上を有する、および/または_できた後、ステップ1の後、Sは以下のaからz、A〜Z、または_
  3. のいずれかで開始することができます
  4. は、1つ以上の末尾の空白文字を持つことができます。

私は間違っていますか?

import re 
def test_s(s): 
    return bool(re.search("[A-Za-z_\s]{1}[A-Za-z0-9_]*[\s]*$",s)) 

アップデート: 私は(それは私の最後の2つのテストケースをキャプチャするために失敗した)以下のソリューションを試してみました:

CASE:リターン・ブール(re.search(R '\ *は[A-はZa - SはZ _]私は、これは動作するはずだと思う))

TESTLIST = ['__This_Is_a_StringThatShouldWork' , '  SoIsThis1 ' , '4getaboutThis1', '7his_ShouldReturnFalse']] 
for s in TESTLIST: 
    print(is_var(s)) 

[出力]

True 
True 
True (Should be False) 
True (Should be False) 

答えて

1

S、「* \よ*ワット\。

import re 

def test_s(s): 
    return bool(re.match("\s+[a-zA-Z_][a-zA-Z0-9_]*\s+", s)) 
0

これを試してみてください:

import re 
def test_s(s): 
    return bool(re.search(r'\s*[A-Za-z_]\w*\s*', s)) 
+0

一つ以上、彼は – nkprince007

+1

を持つことができ、いないん言ったように。違いがある – James

+0

James:あなたの提案に基づいてコメントを更新しました。最後の2つの例がFalseの代わりにTrueを返す理由は何ですか? – DeeeeRoy

0

は、この正規表現を試してみてください:空白を終了

[a-zA-Z_]\w*\s+ 
関連する問題