Skip to main content
 首页 » 编程设计

python之两者之间的匹配!在 python 的文件中

2025年05月04日15wuhuacong

我有一个文件,其中每个 block 都由 ! 分隔。即

! 
 vserver XXXX 
 virtual XX.xx.XX.XX tcp 389 
 owner LDAP 
 serverfarm XXX 
 idle 5 
 persistent rebalance 
 inservice 
! 

我想获取包含虚拟服务器信息的每个部分。我正在尝试在 python 中使用正则表达式,但我在处理换行符时遇到了问题

我试过这样的:

pattern = r"!\n vserver \S+\n " 

请您参考如下方法:

你需要告诉 Python 你正在使用 multi-line正则表达式和 dot characters can match new-lines :

>>> 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!' 

如果你想获取虚拟服务器的名称:

>>> 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'