当前位置:  开发笔记 > 编程语言 > 正文

解析文本文件以匹配字符串和提取值(在Golang中)

如何解决《解析文本文件以匹配字符串和提取值(在Golang中)》经验,为你挑选了1个好方法。

我正在摸索似乎有可能常见的需求,但我无法在网络上找到任何示例.

我有这样一个文件:

  answer VNET_1_DHCP yes
  answer VNET_1_DHCP_CFG_HASH 4CF2C196E368CE83B9D1895C5E05301CDFDEBCA0  
  answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
  answer VNET_1_HOSTONLY_SUBNET 192.168.224.0
  answer VNET_1_VIRTUAL_ADAPTER yes
  answer VNET_8_DHCP yes
  answer VNET_8_DHCP_CFG_HASH D326C0BC7FF6C38C57AF341F9075E576C175B250
  answer VNET_8_HOSTONLY_NETMASK 255.255.255.0
  answer VNET_8_HOSTONLY_SUBNET 172.16.102.0
  answer VNET_8_NAT yes
  answer VNET_8_VIRTUAL_ADAPTER yes

我需要提取特定子网的VNET号(192.168.224.0).VNET数量可能会有所不同(从理论上讲,子网甚至不存在).所以我需要匹配子网是否存在,如果存在则提取网络号(1在本例中).

我发现在BASH中实现它非常容易:

 if grep -q 192.168.224.0 ./networking; then
      echo "The ${VMNET_SUBNET} network already exists"
      NETWORK_NUMBER=$(grep ${VMNET_SUBNET} ./networking | cut -d'_' -f 2)
      echo NETWORK_NUMBER  
 else  

我试图找到使用Go实现这个的最简单方法.

谢谢.



1> Ainar-G..:

您可以使用正则表达式:

re := regexp.MustCompile(`.*VNET_(\d+)_.*192.168.224.0`)
matches := re.FindStringSubmatch(text)
fmt.Println(matches[1])

游乐场:http://play.golang.org/p/NQlA2BObtU.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有