Извлечь точное совпадение из DF с помощью регулярных выражений - PullRequest
1 голос
/ 03 февраля 2020

Я работаю над DF (текст), где мне нужно извлечь точно месяц и год из текста, содержащего только месяц / год, но когда я применяю эту формулу, он извлекает месяц / год из дд / месяц / год, который я не делаю ' t want.

например,

Text1 -5/24/1990 CPT Код: 90792: с медицинскими услугами

Text2 - с 10/2014: усталость, больше забывчивая, нарушенная ловкость на ее левой руке. МРТ показывает примерно 4.2 см x 3.3 см x 2.5 см правой теменной усиливающей массы с окружающим отеком.

Мне нужно извлечь только 10/2014 из DF, но когда я применяю эту формулу, она извлекает 24/1990 и 10/2014 оба.

Мне также нужно извлечь только год из текста из того же DF, если в тексте указан только год.

Формула:

df['Text'].str.extractall(r'((?P<Month>\d{1,2})\/(?P<Year>\d{4}))')

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Попробуйте: (?<!\/|\d)\d{1,2}\/\d\d\d\d(?!\/|\d)

Объяснение:

(?<!\/|\d) - отрицательный взгляд сзади: утверждать, что предшествующее не / или \d (любое значение git)

\d{1,2} - соответствует одной или двум цифрам

\/ - соответствует / буквально

\d\d\d\d - соответствует четырем цифрам

(?!\/|\d) - отрицательный взгляд: утверждайте, что то, что следует, не / или \d (любая ди git)

Демо

0 голосов
/ 03 февраля 2020

Как насчет:

((?<!\d/)(?<!\d)(?P<Month>\d{1,2})\/(?P<Year>\d{4}))

Как видно здесь

Примечание: Это было наиболее полное решение, но есть много методов это проще, чем, например, проверка пробела перед извлекаемой датой

Объяснение:

(?<!) является отрицательным взглядом в регулярном выражении, который гарантирует, что совпадению не предшествует что-либо. Здесь я убедился, что совпадению не предшествует число или число, за которым следует sla sh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...