两个匹配!在python中的文件中

Gre*_*own 1 python regex

我有一个文件,其中每个块由!sie 分隔

!
 vserver XXXX
 virtual XX.xx.XX.XX tcp 389
 owner LDAP
 serverfarm XXX
 idle 5
 persistent rebalance
 inservice
!
Run Code Online (Sandbox Code Playgroud)

我想得到包含vserver信息的每个部分.我试图在python中使用正则表达式,但我在处理换行符时遇到问题

我试过这样的事情:

pattern = r"!\n vserver \S+\n "
Run Code Online (Sandbox Code Playgroud)

Joh*_*web 5

您需要告诉Python您正在使用多行正则表达式,并且点字符可以匹配新行:

>>> m = re.search('^!.*^!', text, re.MULTILINE | re.DOTALL)
>>> m.group(0)
'!\n vserver XXXX\n virtual XX.xx.XX.XX tcp 389\n owner LDAP\n serverfarm XXX\n idle 5\n persistent rebalance\n inservice\n!'
Run Code Online (Sandbox Code Playgroud)

如果要获取vserver 的名称:

>>> m = re.search('^!.*vserver\s+(\w+).*^!', text, re.MULTILINE | re.DOTALL)
>>> m.group(0)
'!\n vserver XXXX\n virtual XX.xx.XX.XX tcp 389\n owner LDAP\n serverfarm XXX\n idle 5\n persistent rebalance\n inservice\n!'
>>> m.group(1)
'XXXX'
Run Code Online (Sandbox Code Playgroud)