Он не включен во внутреннюю группу, но все еще включен как часть внешней группы.Не захватывающая группа не обязательно подразумевает, что она вообще не захвачена ... просто эта группа явно не сохраняется в выходных данных.Это все еще захвачено как часть любых вмещающих групп.
Только не помещайте их в ()
, который определяет захват:
import pandas as pd
df = pd.DataFrame(
{'a' : [1,2,3,4],
'b' : ['41u -428u', '31u - 68u', '11u - 58u', '21u - 318u']
})
df['b'].str.extract(r'- ?(\d+)u', expand=True)
0
0 428
1 68
2 58
3 318
Таким образом, вы сопоставляете все, что имеет '-'
впереди (mabye, сопровождаемый пробелом), 'u'
сзади и числа между ними.
Где,
- # literal hyphen
\s? # optional space—or you could go with \s* if you expect more than one
(\d+) # capture one or more digits
u # literal "u"