我试图找出正则表达式来搜索下面的内容。
authentication {
admin-enabled enabled
syslog-admin-state disabled
server 1.2.3.4 {
address 1.2.3.4
priority 1
port 49
admin-enabled enabled
}
server 2.3.4.5 {
address 2.3.4.5
priority 2
port 2
admin-enabled enabled
}
}
答案 0 :(得分:0)
这应与您的文字相符;使用原子组语法来处理嵌套括号。
authentication\s*(\{(?>[^{}]+|(?1))*\})
请注意,如果您使用的是PHP,则可能会遇到问题?>部分,因为它可以解释为脚本的结尾。在这种情况下,您可以使用?:而不是。
authentication\s*(\{(?:[^{}]+|(?1))*\})
如果您使用的是Python,那么您可以使用新的正则表达式模块来实现您的要求。
以下是如何安装
sudo yum install python-devel
sudo pip install regex
以下是Python代码的工作示例:
#!/usr/bin/python
import regex
#import re
line = "\
other_object1 { \
test1 {\
test1\
}\
}\
\
authentication { \
admin-enabled enabled \
syslog-admin-state disabled \
server 1.2.3.4 {\
address 1.2.3.4\
priority 1\
port 49\
admin-enabled enabled\
}\
server 2.3.4.5 {\
address 2.3.4.5\
priority 2\
port 2\
admin-enabled enabled\
}\
}"
pattern = "authentication\s*(\{(?>[^{}]+|(?1))*\})"
matchObj = regex.search(pattern, line)
if matchObj:
print "matchObj.group() : ", matchObj.group()
else:
print "No match!!"