我需要与字符串值列表匹配。我正在使用“|”.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,但它也没用。从字符串传递时,管道符号似乎未被视为运算符。 有什么办法解决吗?在
使用
r'
前缀作为字符串文本的一部分。这就是它的用途:参见Python demo
如果接口名可能包含特殊的regex元字符,请按如下方式转义这些值:
^{pr2}$另外,如果您计划不仅在字符串的开头匹配字符串,请使用}。见What is the difference between Python's re.search and re.match?
re.search
而不是{你不需要把
"r'"
放在开头,"'"
。这是原始字符串语法的一部分,不是字符串本身的一部分。在相关问题 更多 >
编程相关推荐