尝试使用正则表达式来检测是一个字符串开头的2个字符后跟一个可选的空格,后面跟一个可选的字母。正则表达式检查字符串的第一个字符是数字
这是我的尝试:但似乎并没有吸引我的测试数据
!string.matches("\\b\\d{2}\\s?[a-Z]?")
测试数据:
23: sentence here
尝试使用正则表达式来检测是一个字符串开头的2个字符后跟一个可选的空格,后面跟一个可选的字母。正则表达式检查字符串的第一个字符是数字
这是我的尝试:但似乎并没有吸引我的测试数据
!string.matches("\\b\\d{2}\\s?[a-Z]?")
测试数据:
23: sentence here
contains
不使用正则表达式。你可能想创建模式,然后为每个字符串单独的匹配器,并检查它是否可以find
您描述的正则表达式。所以,你的代码可以像
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)
但这种方法检查尝试这意味着如果你的字符串很长,并且你只想检查前几个字符,效率会很低。
使用matches
,而不是contains
:
!string.matches("^\\d{2}\\s?[a-Z]?.*")
常规表达式是这样的:
^
搜索字符串的开头\\d{2}\\s?[a-Z]?
是你的搜索模式.*
允许字符串的其余部分是什么看一看的API:
'contains'不使用正则表达式。 – Pshemo
啊,谢谢。你会建议如何在String中找到正则表达式? (对Java来说相当新颖)。 – Josh