【问题标题】:Regex for string contains?字符串的正则表达式包含?
【发布时间】:2011-06-27 07:27:14
【问题描述】:

简单地检查字符串是否包含某个单词(例如“测试”)的正则表达式是什么?我已经进行了一些谷歌搜索,但无法获得此类正则表达式的直接示例。这是一个构建脚本,但与任何特定的编程语言无关。

【问题讨论】:

    标签: regex


    【解决方案1】:

    只是不要锚定你的模式:

    /Test/
    

    上述正则表达式将检查在其中某处找到的文字字符串“Test”。

    【讨论】:

    • 谢谢,没想到这么简单!我肯定没有在我的谷歌搜索中看到这一点。不要锚定我的模式是什么意思?
    • 您可以锚定一个模式以匹配字符串的开头或结尾,例如/^Test/ 或 /Test$/ 分别甚至 /^Test$/ 以完全匹配。这个例子是愚蠢的,因为它比比较相等性没有任何好处,但是例如在进行表单字段验证时,像 /^\d+$/ 这样的正则表达式只有在字段包含至少一个数字并且除了数字之外什么都没有时才会匹配。
    • 这个正则表达式不适用于 Kotlin,可能 Java 也一样。使用^.*Test.*$
    【解决方案2】:

    假设常规 PCRE 风格的正则表达式风格:

    如果您想将其作为一个单个完整的单词进行检查,它是\bTest\b,如果需要,带有适当的不区分大小写的标志和您的编程语言的分隔符。 \b 表示“单词边界”,即字符之间的点,可以认为单词开始或结束。例如,由于使用空格来分隔单词,因此空格的两侧都会有单词边界。

    如果您想将其作为单词的一部分进行检查,它只是Test,同样带有适当的不区分大小写标志。请注意,通常在这种情况下,专用的“子字符串”方法往往更快,因为它消除了解析正则表达式的开销。

    【讨论】:

    • "\b 表示“单词边界”,即分隔两个单词的东西(例如空格)。 \b 不匹配空格;它是一个匹配 之间 个字符(或在大多数情况下位于行首或行尾)的断言。
    • @strager:是的,你是对的——我的解释有点不准确。我会编辑。
    【解决方案3】:

    根据您的正则表达式风格 - 正则表达式功能的确切细节因语言而异。

    我将给出 javascript 示例。

    如果您不关心 null 安全性...

    str = "blah"
    str.match(/a/)
    // [ 'a', index: 2, input: 'blah', groups: undefined ]
    

    区分大小写

    /test/.test("does this string contain the word testtesttest")
    // true
    

    不区分大小写

    /test/i.test("Test")
    

    不区分大小写,任意字

    /\b\w+\b/i.test("bLAH")
    // true
    

    【讨论】:

      【解决方案4】:

      我迟到了几年,但为什么不这样呢?

      [Tt][Ee][Ss][Tt]
      

      【讨论】:

      • 这个答案出现在低质量审查队列中,大概是因为您没有解释代码。如果你确实解释了(在你的回答中),你更有可能获得更多的支持——提问者实际上学到了一些东西!
      • 这不是很普遍——想象一下如果你必须搜索的词来自用户。您必须为每个字母生成[Aa] 模式,它会很快变得非常丑陋。
      • 嗯,这对我很有帮助。我正在搜索包含. 的任何文本,所以我尝试了/[.]/。但/./ 不起作用。
      • 如果你想在不区分大小写的情况下找到“测试”这个词,你可以使用/test/i.test(inputString),其中最后的/i 使其不区分大小写(javascript)
      • @AmirJabari,在正则表达式中,点表示:匹配除换行符以外的任何字符。您只需要转义字符:/\./
      猜你喜欢
      • 2011-07-22
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      相关资源
      最近更新 更多