= 6 AND rightHour = 6 AND rightHour = 6-6ren">
gpt4 book ai didi

regex - 如何在字符之间查找和替换

转载 作者:IT王子 更新时间:2023-10-29 01:25:40 26 4
gpt4 key购买 nike

我正在尝试将以下字符串中的第二个“AND”替换为“OR”:

country == "BR" AND (leftHour >= 6 AND rightHour < 24)

我的策略是使用正则表达式:\((.*)\)但这匹配括号之间的所有字符,我只想匹配 AND在两个括号之间。

在 Go 中会很完美,但好的正则表达式就足够了。

编辑:字符串不固定,我们可以在 like 之前有多个“AND”,例如: currency == "USD" AND country == "BR" AND (leftHour >= 6 AND rightHour < 24)

最佳答案

您可以使用像 \([^()]*\) 这样的正则表达式来匹配最里面括号内的字符串并使用 ReplaceAllStringFunc仅将匹配文本中的所有 AND 替换为 OR:

package main

import (
"fmt"
"strings"
"regexp"
)

func main() {
input := `country == "BR" AND (leftHour >= 6 AND rightHour < 24)`
r := regexp.MustCompile(`\([^()]*\)`)
fmt.Println(r.ReplaceAllStringFunc(input, func(m string) string {
return strings.ReplaceAll(m, "AND", "OR")
}))
}

参见 Go demo

请注意,您可以使用第二个正则表达式替换 AND:

return regexp.MustCompile(`\bAND\b`).ReplaceAllString(m, "OR")

这将替换整个单词的 AND,无论是否有空格。参见 this Go demo .

关于regex - 如何在字符之间查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com