【问题标题】:How to match the first character in a String with a regexp?如何将字符串中的第一个字符与正则表达式匹配?
【发布时间】:2014-12-14 18:28:35
【问题描述】:

我需要一个正则表达式来评估单词的第一个字符是否为小写字母。

我有这个 java 代码:Character.toString(charcter).matches("[a-z?]")

例如,如果我有这些词,结果将是:

  • a13 => 真
  • B54 => 错误
  • &32 => 假

我只想匹配一个字母,不知道是否需要使用“?”、“.”或“[a-z]”之后或内部的“{1}”

【问题讨论】:

  • 您不需要正则表达式来执行此操作。那是浪费资源和时间。您可以简单地使用yourString.charAt(0) 并验证此char 是否介于'a''z' 之间。
  • 谢谢。我已经解决了我的问题。

标签: java regex char


【解决方案1】:

有一种内置方法可以在没有正则表达式的情况下执行此操作。

Character.isLowerCase(string.charAt(0))

【讨论】:

    【解决方案2】:

    请根据您的需要使用它:/^[a-z]/

    【讨论】:

      【解决方案3】:

      如果只有一个小写字母,您想要匹配。正如@Luiggi Medonza 所说,您确实/不应该为此需要正则表达式,但如果您想使用它们,您很可能需要这种模式:

      [a-z]{1}
      

      ? 所做的是可选匹配。您想要长度为 1 的严格匹配,因此您需要 {1}

      @Ted Hopp 提到您不需要{1}。你的整个比赛应该是这样的:

      entire_string.matches("^[a-z].+$")
      

      同样,使用内置字符串方法会更快/更好。

      【讨论】:

      • 您不需要{1} 来精确匹配一个字符。这就是完全没有量词时会发生的事情。只需使用[a-z]
      • 我不确定在正则表达式中是否需要{1}matches 还会检查整个字符串是否可以被正则表达式匹配,而不仅仅是字符串的一部分。
      • 谢谢。如果我想匹配 [a-z] 和 [A-Z]。会怎么样?
      • @DiegoGonzalez 抱歉,您提出的问题表明您没有尝试阅读任何正则表达式教程。如果您阅读了有关character classes 的信息,您将能够回答当前评论中的问题。
      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2011-05-06
      • 2012-09-17
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      相关资源
      最近更新 更多