Мне нужна помощь по регулярному выражению, которая отфильтровывает "N", за которой следует любая комбинация цифр.
import re
exp = "1+2+N32.23"
variable_refs = re.compile(r"([0-9]+)")
exp_template = re.sub(variable_refs, r'{key_\1}', exp)
Текущий вывод: {key_1} + {key_2} +N {key_32}
Ожидаемый результат: {key_1} + {key_2} +N 32.23
Используйте отрицательное регулярное regex
lookbehind:
import re
exp = "1+2+N32.12"
variable_refs = re.compile(r"\b(?<!N|\.)([0-9]+)")
exp_template = re.sub(variable_refs, r'{key_\1}', exp)
print(exp_template)
# {key_1}+{key_2}+N32.12
Попробуй это:
import re
variable_refs = re.compile(r"\b(?<!N)([0-9])+")
exp_template = re.sub(variable_refs, r'{key_\1}', exp)
Вы можете использовать отрицательный lookbehind (?<!N)
или (?<!\bN)
если N
необходимо сопоставить как целое "слово":
import re
exp = "1+2+N3"
variable_refs = re.compile(r"(?<!N)([0-9]+)")
exp_template = re.sub(variable_refs, r'{key_\1}', exp)
print(exp_template)
# => {key_1}+{key_2}+N3