2016-08-15 16 views
5

rozpoczyna podział na końcu ciągu. Jak mogę rozpocząć dzielenie na końcu ciągu znaków podczas korzystania z re.split()?Co to jest odpowiednik funkcji rsplit() z re.split()?

Przykład:

import re 
splitme = "a!b?c!d" 
re.split(r"[!\?]", splitme, maxsplit = 1) 

Powroty:

a 

ale chcę:

d 

Chociaż pisałem to pytanie, zdałem sobie sprawę, mogłem użyć

re.split(r"[!\?]", splitme)[-1] 

Ale to nie wydaje się najbardziej skuteczną metodą, ponieważ dzieli cały ciąg, podczas gdy możemy zatrzymać się po pierwszym meczu (z prawej).

+0

Cóż, możesz * odwrócić ciąg znaków, ale nie widzę, jak byłoby wydajniejsze niż twoje rozwiązanie. Możesz spróbować "timeit" obu podejść i zobaczyć, który z nich działa lepiej dla twoich potrzeb. – DeepSpace

Odpowiedz

2

Nie ma potrzeby dzielenia, jeśli chcesz tylko ostatni.

match = re.search(r'[^!?]*$', splitme) 
if match: 
    return match.group(0)