2017-01-19 4 views
0

私の入力はしてもしなくてもよいパターンを含むことが文字列で見つかった、そうでない場合は空の文字列とします戻る最初のインスタンス

p = '(\d)' 
s = 'abcd3f' 

私があれば、このパターンの最初のマッチをキャプチャグループを返すようにしたいです見つかった場合は空の文字列を返します。

result = re.search(p, s)[1] 

最初の一致が返されます。しかし、s = 'abcdef'の場合、searchNoneを返し、索引付けは例外をスローします。それをする代わりに空の文字列を返すだけです。私が行うことができます。

g = re.search(p, s) 

result = '' 
if len(g) > 0: result = g[1] 

、あるいはを:

try: 
    result = re.search(p, s)[1] 
except: 
    result = '' 

しかし、これらは両方とも、そう単純なもののためにかなり複雑なようです。私は欲しいものを達成するためのよりエレガントな方法がありますか?

答えて

0

これを実現するには、if YourString is None:を使用できます。例えば:Python用

if s is None : s = '' 

例:

import re 
m = re.search('(\d)', 'ab1cdf') 
if m is None : m = '' 
print m.group(1) 
関連する問題