= 6 AND rightHour < 24) 我的策略是使用正则表达式执行此操作:\((.*)\) 但这" />
登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-19 22:36:38 105浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在字符之间查找和替换》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

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

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

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

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

编辑:字符串不是固定的,我们可以在前面有多个“AND”,例如: currency == "USD" AND 国家 == "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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>