我有以下 Golang 代碼:
package main
import (
"fmt"
"regexp"
)
func main() {
// dummy text data
blob := `
#s-kiwi
foo
#e-kiwi
#s-banana
bar
#e-banana
#s-mango
baz
#e-mango
`
// try to match two lines
fruit := "banana"
result, _ := regexp.MatchString("#[se]-" fruit, blob)
fmt.Println(result)
}
去游樂場鏈接:https ://go.dev/play/p/p9Q4HYijx9m
我正在嘗試使用 AND 屬性實作完全匹配。我想搜索模式#s-banana
AND#e-banana
只是為了確保 blob 文本具有其封閉和啟動器引數。
我嘗試過的是使用regexp.MatchString("#[se]-" fruit, blob)
但"#[se]-"
只匹配字符s
OR e
.
這可以在oneliner中實作嗎?我應該添加一個新的正則運算式條件嗎?如果是這樣的話,這似乎并不完美。
我想要的結果是:
嘗試使用 AND 條件在 golang 上使用正則運算式搜索文本中的兩個字串。
非常感謝。
uj5u.com熱心網友回復:
目前尚不清楚您要做什么。但是假設您要確認多行文本包含一對以開頭#s-banana
和結尾的標簽,#e-banana
您可以搜索它,中間有任意數量的字符:
result, _ := regexp.MatchString("(?s)#s-" fruit ".*?#e-" fruit, blob)
那回傳true
。首字母也(?s)
允許.
匹配換行符,并且.*?
匹配零個或多個字符的最短序列,包括換行符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/526979.html
標籤:正则表达式去