如果我有像
这样的字符串ip nat pool-group pool1 pool2 pool3 vrid 0
pool-group是我想要检索并存储到字符串变量中的变量。
pool1 - pool3也是我想要存储到数组列表中的变量,但是可以有任意数量的变量而且不一定命名为pool *
我想捕获池组和所有池
我想使用正则表达式执行此操作但无法使其正常工作
答案 0 :(得分:0)
我认为这就是你要找的东西,
>>> s = "ip nat pool-group pool1 pool2 pool3 vrid 0"
>>> m = re.search(r'pool-\S+', s)
>>> f = m.group()
>>> f
'pool-group'
>>> lst = re.findall(r'pool\d+', s)
>>> lst
['pool1', 'pool2', 'pool3']
OR
>>> m = re.search(r'\w+-\w+', s)
>>> f = m.group()
>>> f
'pool-group'
>>> lst = re.findall(r'\w+\d+', s)
>>> lst
['pool1', 'pool2', 'pool3']
答案 1 :(得分:0)
您可以简单地按空格分割并从结果列表中获取所需的项目:
line = "ip nat pool-group pool1 pool2 pool3 vrid 0"
arr = line.split(' ')
print arr # prints ['ip', 'nat', 'pool-group', 'pool1', 'pool2', 'pool3', 'vrid', '0']
如果你想使用正则表达式:
import re
line = "ip nat pool-group pool1 pool2 pool3 vrid 0"
arr = re.split('\s', line)
print arr # prints ['ip', 'nat', 'pool-group', 'pool1', 'pool2', 'pool3', 'vrid', '0']
# and you can also do the following:
print arr[3:6] # prints ['pool1', 'pool2', 'pool3']
答案 2 :(得分:0)
看起来你可能想要这样的东西:
>> import re
>>> m = re.search(r'ip nat (\S+)\s+(\S+)\s+(\S+)\s+(\S+) vrid 0', s)
>>> print m.groups()
('pool-group', 'pool1', 'pool2', 'pool3')
>>> print m.group(1)
pool-group
这将搜索'ip nat',然后搜索四组非空格,其间至少有一个空白字符。只要池变量永远不包含空格/制表符,这应该是通用的。
编辑:
>>> s = 'ip nat pool-group pool1 pool2 pool3 vrid 0'
>>> t = 'ip nat pool-group pool1 pool2 pool3 pool6 pool7 vrid 0'
>>> m = re.search('^ip nat (.*) vrid 0', s)
>>> print m.groups()
('pool-group pool1 pool2 pool3',)
>>> n = re.search('^ip nat (.*) vrid 0', t)
>>> print n.groups()
('pool-group pool1 pool2 pool3 pool6 pool7',)
答案 3 :(得分:0)
import re
x="ip nat pool-group pool1 pool2 pool3 vrid 0"
pattern=re.compile(r"ip nat (.*?) vrid 0")
print pattern.findall(x)
这将为所有游泳池提供无论其数量如何。希望这有帮助。