Java 正则表达式检查字符串的第一个字符是否为数字

Java 正则表达式检查字符串的第一个字符是否为数字,java,regex,Java,Regex,试图使用正则表达式检测一个字符串,该字符串以2个字符开头,后跟一个可选空格,后跟一个可选字母 这是我的尝试:但似乎没有捕捉到我的测试数据 !string.matches("\\b\\d{2}\\s?[a-Z]?") 测试数据: 23: sentence here 使用匹配项而不是包含项: !string.matches("^\\d{2}\\s?[a-Z]?.*") 正则表达式的工作原理如下: ^搜索字符串的开头 \\d{2}\\s?[a-Z]?是您的搜索模式 *允许字符串的其余部分为任何

试图使用正则表达式检测一个字符串,该字符串以2个字符开头,后跟一个可选空格,后跟一个可选字母

这是我的尝试:但似乎没有捕捉到我的测试数据

!string.matches("\\b\\d{2}\\s?[a-Z]?")
测试数据:

23: sentence here

使用
匹配项
而不是
包含项

!string.matches("^\\d{2}\\s?[a-Z]?.*")
正则表达式的工作原理如下:

  • ^
    搜索字符串的开头
  • \\d{2}\\s?[a-Z]?
    是您的搜索模式
  • *
    允许字符串的其余部分为任何内容
请看一下API:

  • 包含:
  • 匹配项:

  • 包含不使用正则表达式的
    。您可能需要创建模式,然后为每个字符串创建单独的匹配器,并检查它是否能够
    找到您描述的
    正则表达式。所以你的代码看起来像

    private static final Pattern p = Pattern.compile("^\\d\\d\\s?[a-Z]?");
    public static boolean test(String str){
        return p.matcher(str).find();
    }
    
    (您可以将此方法重命名为更具描述性的名称)



    您可以尝试使用
    yourString.matches(regex)
    ,但此方法会检查regex是否匹配整个字符串,而不仅仅是其中的一部分,这意味着如果您的字符串很长,并且您只想检查前几个字符,则会导致效率低下。

    包含
    不使用regex.ah,谢谢。您建议如何查找字符串中的正则表达式?(对Java来说相当陌生)。