【问题标题】:How to match string that does not contain a specific string如何匹配不包含特定字符串的字符串
【发布时间】:2019-06-05 21:09:33
【问题描述】:

我想在 Go 中编写正则表达式以匹配一个字符串,前提是它不包含特定的子字符串 (-numinput) 并且包含另一个特定的字符串 (-setup)。

例如,对于 inputStr

以下类型的字符串不应匹配,因为存在 -numinput

str = "axxx yy  -setup  abc -numinput 12345678 aaa"

以下类型的字符串应匹配,因为存在 -setup 而不存在 -numinput

str = "axxx yy  -setup  abc aaa"

以下类型的字符串不应匹配,因为即使 -numinput 不存在,-setup 也不存在

str = "axxx yy abc aaa"

我遇到了一些帖子,例如Regular expression to match a line that doesn't contain a word?

但是,我只是不明白如何在 Golang 中做到这一点

【问题讨论】:

  • 为什么不使用strings.Contains()? Go 中的正则表达式不允许环视,你想要的看起来像一个非常丑陋的正则表达式。
  • Regex 是完全错误的工具。

标签: regex go regex-lookarounds


【解决方案1】:

如果要解析命令行标志,可以考虑使用标志包

https://golang.org/pkg/flag/

对于一般字符串相关的功能,考虑字符串包

https://golang.org/pkg/strings/

在你的情况下:

strings.Contains(str, "-setup") && !strings.Contains(str, "-numinput")

【讨论】:

    猜你喜欢
    • 2010-11-22
    • 2020-12-25
    • 1970-01-01
    • 2012-07-24
    • 2022-11-19
    • 2019-04-24
    • 1970-01-01
    • 2012-03-24
    • 2021-06-02
    相关资源
    最近更新 更多