【问题标题】:Alternative for matches() in JavaJava中matches()的替代方法
【发布时间】:2017-08-30 13:18:54
【问题描述】:

在 SQL 中,我们有模式匹配运算符 like 与“_”和“%”来搜索字符串或字符串的一部分。
Java中有没有类似的东西。
matches() 方法。但是,只有在整个 String 与正则表达式匹配时,才会返回 true
我需要一种可以评估给定String 是否存在于另一个String 中的方法。

【问题讨论】:

  • "_" and "% 不是pattern matching operators。那是通配符
  • 亲爱的,你想要contains
  • 仅当整个字符串与正则表达式匹配时才返回 true 否。如果字符串与正则表达式匹配则返回 true。您可以为每个字符使用点。像.*HELLO World.* 这样的东西也会匹配HELLO World i am here
  • @Jens 值得一提的是,默认情况下. 不匹配行终止符,因此这不适用于多行文本。为了解决这个问题,我们可以使用 DOTALL 标志(我们可以将 (?s) 放在正则表达式的开头),或者代替 . 使用集合的总和及其否定,如 [\s\S] 来表示所有字符。

标签: java pattern-matching match


【解决方案1】:

【讨论】:

  • 不适用于正则表达式,仅适用于静态字符串。值得一提:)
【解决方案2】:
如果您需要执行正则表达式匹配,

contains 不可用。

您可以欺骗 matches() 方法使其行为符合您的预期,只是说您想要字符串开头和结尾的任何字符序列。

很好的解决方案是使用 ma​​tcher.find() 来查找正则表达式的出现。看班级Matcher

【讨论】:

    【解决方案3】:

    您可以使用 String.Contains()

    例子:

      public static void main(String[] args)
      {
        String s = "Hello World";
    
        System.out.print(s.contains("Wor")); //return true
        System.out.print(s.contains("wor")); //return false beacuse is case-sensitive
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      相关资源
      最近更新 更多