У меня есть файл с содержимым ниже
# Requires authentication with auth-user-pass
auth-user-pass
#auth-user-pass
# auth-user-pass
auth-user-passwd
Есть ли способ, чтобы регулярное выражение соответствовало только второй строке с Golang?
Я пробовал со следующим кодом, но он возвращает пустой фрагмент
package main
import (
"fmt"
"os"
"regexp"
)
func main() {
bytes, err := os.ReadFile("file.txt")
if err != nil {
panic(err)
}
re, _ := regexp.Compile(`^auth-user-pass$`)
matches := re.FindAllString(string(bytes), -1)
fmt.Println(matches)
}
$ go run main.go
[]
Я просто отредактировал вопрос, чтобы было понятнее
Ваша строка содержит несколько строк, поэтому вам следует включить многострочный режим (с флагом m
):
Вот быстрый пример:
package main
import (
"fmt"
"regexp"
)
func main() {
var str = `# Requires authentication with auth-user-pass
auth-user-pass
#auth-user-pass
# auth-user-pass
auth-user-passwd`
re, _ := regexp.Compile(`(?m)^auth-user-pass$`)
matches := re.FindAllString(str, -1)
fmt.Println(matches)
}
Вы можете попробовать этот фрагмент на: https://play.golang.com/p/6au1_K2ImBt.
Конечно,
grep --help
,man grep
иinfo grep