2017-07-10 5 views
0

文字列がパターンに一致するようにしようとしています。文字 'std'で終わる場合は、最後の6文字を分割して別の接頭辞を追加します。Pythonパターンが文字列と一致する

私は正規表現とre.splitでこれを行うことができると仮定していますが、新しい接頭辞を追加し、最後の3文字の存在に基づいて最後の6文字を取る正しい表記法がわかりません。

regex = r"([a-zA-Z])" 
if re.search(regex, "std"): 
    match = re.search(regex, "std") 

#re.sub(r'\Z', '', varname) 
+2

私は正規表現がこれに対して過剰なビットであると思います。 ['endswith'](https://docs.python.org/2/library/stdtypes.html#str.endswith)を試してください。 – glibdud

答えて

3

正規表現の必要はありません。ただ、標準の文字列メソッドを使用します。

regex = re.compile(".{3}std$") 

s = regex.sub(new_suffix, s) 
+0

OPは "新しい接尾辞"ではなく、 "新しい接尾辞"と言っています。 –

+1

@Błotosmętek彼はまた、 "prepend"の代わりに "append"と言いました。 – Artyer

+0

混乱して申し訳ありませんが、ちょうど '-6:'に変更する必要があります –

4

あなたはどのように混乱している:

if s.endswith('std'): 
    s = s[:-6] + new_suffix 

をしかし、あなたは正規表現を使用していた場合、あなたは正規表現に置き換えるだろう、あなたは新しいサフィックスを置き換えますここで正規表現を使用してください。あなたのコードは、 "文字列 'std'を英数字で検索します。

しかし、ここでは正規表現を使用する必要はありません。文字列スライスを使用するだけで、.endswith

if my_string.endswith('std'): 
    new_string = new_prefix + mystring[-6:] 
関連する問題