如果我有一根绳子
ip nat pool-group pool1 pool2 pool3 vrid 0池组是我想要检索并存储到字符串变量中的一个变量。
pool1 - pool3也是我想要存储到数组列表中的变量,但是可以有任意数量的变量,并且不一定要命名池*。
我想要捕获池组和所有的池
我想用regex来做这件事,但是无法让它工作。
发布于 2014-07-22 04:45:05
看起来你可能想要这样的东西:
>> 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',)发布于 2014-07-22 04:36:21
我想这就是你要找的,
>>> 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']或
>>> m = re.search(r'\w+-\w+', s)
>>> f = m.group()
>>> f
'pool-group'
>>> lst = re.findall(r'\w+\d+', s)
>>> lst
['pool1', 'pool2', 'pool3']发布于 2014-07-22 04:41:46
您只需按空格拆分,并从结果列表中获取所需的项:
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']如果您想使用regex:
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']https://stackoverflow.com/questions/24878951
复制相似问题