Метод fullmatch
Метод fullmatch применяется к строковой серии
через аксессор str и проверяет, полностью ли
каждая строка соответствует переданному регулярному
выражению. В отличие от match, который ищет
совпадение только в начале строки, fullmatch
требует, чтобы шаблон совпадал со всей строкой от
начала и до конца. Первым параметром передаётся
регулярное выражение, а параметром flags можно
управлять опциями поиска.
Синтаксис
ser.str.fullmatch(pat, case=True, flags=0, na=None)
Параметр pat принимает строку с регулярным
выражением. Параметр case определяет
чувствительность к регистру, na задаёт
заполнитель для пропущенных значений.
Пример
Проверим, состоят ли строки ровно из трёх букв:
import pandas as pd
ser = pd.Series(['abc', 'abcd', '123', 'xyz', 'abcde'])
res = ser.str.fullmatch(r'[a-z]{3}')
print(res)
Результат выполнения кода:
0 True
1 False
2 False
3 True
4 False
dtype: bool
Строка 'abc' и 'xyz' подходят под шаблон, а остальные строки - нет.
Пример
Используем параметр case для отключения
чувствительности к регистру:
import pandas as pd
ser = pd.Series(['user', 'User', 'USER', 'users'])
res = ser.str.fullmatch(r'user', case=False)
print(res)
Результат выполнения кода:
0 True
1 True
2 True
3 False
dtype: bool
Все три строки совпадают с шаблоном, кроме 'users', потому что она содержит лишние символы.
Пример
Применим метод к таблице с колонкой строковых значений:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4],
'b': ['data', 'data.csv', 'file.csv', 'log']
})
res = df['b'].str.fullmatch(r'.+\.csv')
print(res)
Результат выполнения кода:
0 False
1 True
2 True
3 False
dtype: bool
Строки 'data.csv' и 'file.csv' полностью совпадают с шаблоном "любые символы, точка, csv".
Пример
Добавим символы начала и конца строки, чтобы убедиться в совпадении всей строки:
import pandas as pd
ser = pd.Series(['article', 'article123', '123article', 'article'])
res = ser.str.fullmatch(r'^article$')
print(res)
Результат выполнения кода:
0 True
1 False
2 False
3 True
dtype: bool
Только строки, полностью совпадающие со словом
'article', получили True.
Пример
Обработаем пропущенные значения с помощью na:
import pandas as pd
ser = pd.Series(['abc', None, 'xyz', 'ABC'])
res = ser.str.fullmatch(r'[a-z]{3}', na=False)
print(res)
Результат выполнения кода:
0 True
1 False
2 True
3 False
dtype: bool
Пропуск заменён на False, а строка 'ABC'
не совпала из-за регистра.