package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?\s*(?<amount>-*\d+,\d+)\s*$`)
var str = ` 31-12-2019 Forfait 01-01-2019 - 31-12-2019 -29,00
31-12-2019Forfait 01-01-2019 - 31-12-201950,00
31-12-2019Mercedes-500,00
31-12-2019Client10 700,00
31-12-2019Comptoir17 50,00
// edge cases
31-12-2019Client 10700,00
31-12-2019Client 10-700,00
31-12-2019Client 10 700,00
31-12-2019Comptoir 1750,00
31-12-2019Comptoir 17-50,00
31-12-2019Comptoir 17 50,00
// versions related to [https://regex101.com/r/7TdghZ/1] ...
^\s*(?<date>\d{2}-\d{2}-\d{4})\s*(?<text>[^\s-]+(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?)\s*(?<amount>-*\d+,\d+)
(?<date>\d{2}-\d{2}-\d{4})\s*(?<text>[^\s-]+(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?)\s*(?<amount>-*\d+,\d+)\s*$
// final version
(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?\s*(?<amount>-*\d+,\d+)\s*$
`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/