在python中对正则表达式在变量中使用OR运算符(|)

2024-09-29 23:21:40 发布

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

我需要与字符串值列表匹配。我正在使用“|”.join()来构建一个传入重新匹配公司名称:

import re
line='GigabitEthernet0/1 is up, line protocol is up'
interfacenames=[
                'Loopback',
                'GigabitEthernet'
                ]
rex="r'" + '|'.join(interfacenames) + "'"
print rex
interface=re.match(rex,line)
print interface

代码结果是:

^{pr2}$

但是,如果我将字符串直接复制到match中:

interface=re.match(r'Loopback|GigabitEthernet',line)

它起作用:

r'Loopback|GigabitEthernet'
<_sre.SRE_Match object at 0x7fcdaf2f4718>

我确实尝试过用rex中的“环回千兆以太网”替换.join,但它也没用。从字符串传递时,管道符号似乎未被视为运算符。 有什么办法解决吗?在


Tags: 字符串re列表ismatchline公司interface
2条回答

使用r'前缀作为字符串文本的一部分。这就是它的用途:

rex=r'|'.join(interfacenames)

参见Python demo

如果接口名可能包含特殊的regex元字符,请按如下方式转义这些值:

^{pr2}$

另外,如果您计划不仅在字符串的开头匹配字符串,请使用re.search而不是{}。见What is the difference between Python's re.search and re.match?

你不需要把"r'"放在开头,"'"。这是原始字符串语法的一部分,不是字符串本身的一部分。在

rex = '|'.join(interfacenames)

相关问题 更多 >

    热门问题