使用Golang,如何读取2个字符之间的文件内容

使用Golang,如何读取2个字符之间的文件内容,go,Go,所以我真的很想学围棋,然而围棋是一门比我想象的更难、更令人困惑的语言。我的目标是编写一个程序来编辑dns文件。第一步是打开一个文件并将其读入内存。好的,这可以通过ioutil.Readfile轻松完成。因此,我需要做的下一件事是只阅读SOA,或者直到遇到“)”为止。我到底要怎么做?以下是文件的外观: example.com. SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial

所以我真的很想学围棋,然而围棋是一门比我想象的更难、更令人困惑的语言。我的目标是编写一个程序来编辑dns文件。第一步是打开一个文件并将其读入内存。好的,这可以通过ioutil.Readfile轻松完成。因此,我需要做的下一件事是只阅读SOA,或者直到遇到“)”为止。我到底要怎么做?以下是文件的外观:

example.com.    SOA     dns1.example.com. hostmaster.example.com. (
            2001062501 ; serial
            21600      ; refresh after 6 hours
            3600       ; retry after 1 hour
            604800     ; expire after 1 week
            86400 )    ; minimum TTL of 1 day

理想情况下,该程序将以包含“SOA”的行开始,以“)”结束,并同时识别“;”。我应该从哪里开始呢

实现完全控制的一种方法是使用
text/scanner
以下是您的案例示例:


否则,您可以使用正则表达式来匹配特定的行

Go中词汇扫描的有趣入门。虽然你可能可以做一些简单的事情,但它会告诉你从哪里开始。
package main

import (
    "fmt"
    "strings"
)
import "text/scanner"

var dnsRecord = `example.com.    SOA     dns1.example.com. hostmaster.example.com. (
            2001062501 ; serial
            21600      ; refresh after 6 hours
            3600       ; retry after 1 hour
            604800     ; expire after 1 week
            86400 )    ; minimum TTL of 1 day
`

func main() {

    var s scanner.Scanner
    s.Init(strings.NewReader(dnsRecord))
    tok := s.Scan()
    for tok != scanner.EOF {
        // do something with tok
        tok = s.Scan()
        fmt.Println(s.TokenText())
    }

}