正则表达式错误:引发错误,v#表达式无效

2024-10-01 11:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个变量device='A/B/C/X1',它在另一个文件中被注释掉了。同一设备可以有多个实例,例如'A/B/C/X1@1'..@2等等。所有这些设备都在另一个前缀为*的文件中注释掉。在

我想删除*,但不影响类似的设备,如'A/B/C/X**10**'。在

我尝试使用regex简单地用下面的代码行替换一个模式,但是我得到了一个InvalidExpression错误。在

line=re.sub('^*'+device+'@',device+'@',line)

请帮忙。在


Tags: 文件实例代码redevice错误line模式
2条回答
def replace_all(text):
    if text in ['*']:
        text = text.replace(text, '')
    return text

my_text = 'adsada*asd*****dsa*****'

result = "".join(map(replace_all, my_text))
print result

或者

^{pr2}$

您需要转义星号,因为它在regex语法中有含义: line=re.sub(r'^\*'+device+'@',device+'@',line)。在

转义用于构造正则表达式的变量也是一个好主意: line=re.sub(r'^\*'+re.escape(device)+'@',device+'@',line)

相关问题 更多 >