正則運算式 101 顯示此正則運算式有效:
/during.*\(\"\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\",.*\"\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\"\)|during.*\(startOfMonth\(\),.*now\(\)\)/gm
但是在 Go 中使用它,嘗試時它似乎不起作用FindAllString(Go Playground)
package main
import (
"fmt"
"regexp"
)
var duringRegex *regexp.Regexp
func init() {
duringRegex = regexp.MustCompile(`/during.*\(\"\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\",.*\"\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\"\)|during.*\(startOfMonth\(\),.*now\(\)\)/gm`)
}
func main() {
jqlDuringBeginningOfMonthToEndOfMonth := "project = SWB AND status changed from \"In Regression\" to (Done) during (\"2022-09-01\", \"2022-09-30\")"
jqlDuringStartOfMonthToNow := "project = SWB AND status changed from \"In Regression\" to (Done) during (startOfMonth(), now())"
fmt.Printf("result: %s", duringRegex.FindAllString(jqlDuringBeginningOfMonthToEndOfMonth, -1))
fmt.Println()
fmt.Printf("result: %s", duringRegex.FindAllString(jqlDuringStartOfMonthToNow, -1))
}
運行顯示:
result: []
result: []
Program exited.
我懷疑這種行為與 JQL 字串中的轉義引號有關。將 JQL 字串更改為使用單引號也不會對結果產生影響。
uj5u.com熱心網友回復:
感謝 Pak Uula 的提示。還有這個答案:Find all string match with Regex golang
解決方案是不要在正則運算式上使用邊界,而且正如 Pak 所提到的,正則運算式中的反引號會處理引號;所以沒有必要逃避那些。Go Playground中的解決方案
package main
import (
"fmt"
"regexp"
)
var duringRegex *regexp.Regexp
func init() {
duringRegex = regexp.MustCompile(`during.*\("\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])",.*"\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])"\)|during.*\(startOfMonth\(\),.*now\(\)\)`)
}
func main() {
jqlDuringBeginningOfMonthToEndOfMonth := "project = SWB AND status changed from \"In Regression\" to (Done) during (\"2022-09-01\", \"2022-09-30\")"
jqlDuringStartOfMonthToNow := "project = SWB AND status changed from \"In Regression\" to (Done) during (startOfMonth(), now())"
fmt.Printf("result: %s", duringRegex.FindAllString(jqlDuringBeginningOfMonthToEndOfMonth, -1))
fmt.Println()
fmt.Printf("result: %s", duringRegex.FindAllString(jqlDuringStartOfMonthToNow, -1))
}
運行顯示:
result: [during ("2022-09-01", "2022-09-30")]
result: [during (startOfMonth(), now())]
Program exited.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524295.html
標籤:正则表达式去jql
上一篇:Protobuf動態訊息模式驗證
