#python #regex #parsing #regex-lookarounds
#python #регулярное выражение #синтаксический анализ #поиск регулярных выражений
Вопрос:
У меня возникла проблема с правильным получением моего регулярного выражения. Я хочу получить только определенные числа в следующих строках. Например, ниже приведены некоторые строки вместе с регулярным выражением, которое я использую
matcher = re.compile(r'(?<=[/- ])([0-9] )')
string = 'Redundant 100/70/50/50-0/0/0/0; EX-SEP ANN IMPLANT MAX. '
string2 = 'Big High 200/40/40/0/0-80/60/40/0/0; EX-WP 9months 7. '
Результатом этого является
['100', '100', '85', '50', '0', '0', '0', '0']
['100', '80', '50', '0', '0', '80', '60', '40', '0', '0', '9', '7']
Я хотел бы найти способ получить только числа рядом с ‘/’, но не ‘9’ и ‘7’ во второй строке, например. Я не могу найти способ сделать это и попытался использовать выражение lookbehind, но не могу получить только те числа, которые я хочу, без получения других чисел в моих строках.
Для меня это все ново, и я был бы очень признателен за любую помощь в том, почему я не получаю ожидаемые ответы для каждой строки
Ответ №1:
Вы можете сопоставлять последовательности цифр, близкие к /
или -
использующие
(?<=[/-])[0-9] |[0-9] (?=[/-])
Смотрите демонстрацию регулярных выражений и график регулярных выражений:
Подробные сведения
(?<=[/-])[0-9]
— одна или несколько цифр/
-
, перед которыми стоит или|
— или[0-9] (?=[/-])
— одна или несколько цифр, которые имеют/
или-
сразу после.
Комментарии:
1. Спасибо! Я застрял на этом некоторое время и решил, что есть более простое решение, чем то, что я думал сделать
2. Если что-то неясно или ответ не соответствует требованиям OP, просто дайте мне знать, чтобы я мог исправить решение.
3. Все работает отлично! Спасибо, это большая помощь в моей путанице в этой теме