Java 正则表达式检查字符串的第一个字符是否为数字
试图使用正则表达式检测一个字符串,该字符串以2个字符开头,后跟一个可选空格,后跟一个可选字母 这是我的尝试:但似乎没有捕捉到我的测试数据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]?是您的搜索模式 *允许字符串的其余部分为任何
!string.matches("\\b\\d{2}\\s?[a-Z]?")
测试数据:
23: sentence here
使用
匹配项
而不是包含项
:
!string.matches("^\\d{2}\\s?[a-Z]?.*")
正则表达式的工作原理如下:
搜索字符串的开头^
是您的搜索模式\\d{2}\\s?[a-Z]?
允许字符串的其余部分为任何内容*
- 包含:
- 匹配项:
包含不使用正则表达式的
。您可能需要创建模式,然后为每个字符串创建单独的匹配器,并检查它是否能够找到您描述的正则表达式。所以你的代码看起来像
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来说相当陌生)。