我需要解析以下类型的配置数据,以便能够查找和更改某个部分中的设置(例如, eth_ph_pure 部分中的参数 adapter >):
[global]
db_ip = 127.0.0.1
db_port = 1215
control_port = 1233
[eth_ph_pure]
adapter_name = eth0
#adapter = 0
loging = false
log_in = false
log_out = false
我使用following regular expression来实现此目的:
/\[eth_ph_pure][^\[]*(?<!#)adapter\s*=\s*(.*?)\s/s
但是如果我在&#39;#&#39; 符号后面添加空格,它会在注释掉的行中找到值。我不需要接收已注释参数的值。
如何修复正则表达式?
答案 0 :(得分:1)
你可以试试下面的正则表达式,
/\[eth_ph_pure\].*?#\s*adapter\s*=\s*\S+(*SKIP)(*F)|\[eth_ph_pure\].*?\s*adapter\s*=\s*(\S+)/s