过滤掉' N'的正则表达式后跟任何数字组合

时间:2018-06-18 11:27:10

标签: python regex python-3.x

我需要有关过滤掉' 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} + N32.23

3 个答案:

答案 0 :(得分:2)

使用负面的后视regex

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

答案 1 :(得分:2)

试试这个:

import re
variable_refs = re.compile(r"\b(?<!N)([0-9])+")
exp_template = re.sub(variable_refs, r'{key_\1}', exp)

答案 2 :(得分:0)

如果必须将(?<!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

请参阅Python demo