2016-05-30 16 views
1

私は文字列を持っており、キャプチャするには最初の要素が必要です。正規表現を使って作業しています

s = extra-root, May 15, 2024, Entry, abcd: efgh 

私のようにそれをやって、

print s.split(",")[0] 

しかし、カンマで文字列の最初の要素を取得するために再使用する方法はありますか?私は "余分なルート"をしたい。

+0

最初の要素のセミコロンはどこにありますか? –

+0

これはカンマで、セミコロンではありません。 – houcros

+0

'print(re.sub(r '、。*'、 '' s))' – rock321987

答えて

3

条件付きの通常の分割機能を使用することができます。正規表現が必要な場合は、re.searchが最初の一致を返す最良の選択です。

>>> s = 'extra-root, May 15, 2024, Entry, abcd: efgh, ds:sd' 
>>> [i for i in s.split(',') if ':' in i][0] 
' abcd: efgh' 
>>> next(i for i in s.split(',') if ':' in i) 
' abcd: efgh' 

または

  • [^,]*
    re.search(r'[^,]*:[^,]*', s).group() 
    

    は、任意の文字に一致しなく,、0回以上の。
  • :はコロンに一致します。
  • [^,]*は、,の0文字以上の任意の文字に一致します。

更新:

カンマで区切られた文字列の最初の要素を取得します。

re.search(r'^[^,]*', s).group() 
  • ^開始
  • [^,]*どれ文字ではなく、カンマの、0回以上。開始時に空の文字列と一致するはずですが、+を使用すると空文字列は取り込まれません。 +は、少なくとも1つのcharが存在すると予想しているためです。
+0

を参照してください。 "ルート" – sam

+0

@サワワット?なぜコロンについて指定するのですか? –

+0

're.search(r '^ [^、] +'、s).group()' –

関連する問題