如何查找字符串是否包含数字后跟特定字符串

时间:2013-07-27 12:33:47

标签: java string parsing

我有一个这样的字符串:

String str = "Friday 1st August 2013"

我需要检查:如果字符串包含“任意数字”后跟“st”字符串,则打印“是”,否则打印“否”。

我尝试过:if ( str.matches(".*\\dst") )if ( str.matches(".*\\d.st") ),但它不起作用。

任何帮助?

3 个答案:

答案 0 :(得分:9)

使用:

if ( str.matches(".*\\dst.*") )

String#matches()匹配从字符串开头到结尾的正则表达式模式。锚点^$是隐含的。因此,您应该使用与完整字符串匹配的模式。

或者,使用PatternMatcherMatcher#find()方法在字符串中的任意位置搜索特定模式:

Matcher matcher = Pattern.compile("\\dst").matcher(str);
if (matcher.find()) {
    // ok
}

答案 1 :(得分:1)

正则表达式可用于匹配此类模式。 e.g。

 String str = "Friday 1st August 2013"
    Pattern pattern = Pattern.compile("[0-9]+st");
    Matcher matcher = pattern.matcher(str);
    if(mathcer.find())
      //yes
    else
     //no

答案 2 :(得分:1)

您可以使用此正则表达式:

.*?(\\d+)st.*

?之后的*是必要的,因为*是“贪婪的”(它将匹配整个字符串)。 *?进行“非贪婪”的比赛。此外,该数字可以有多个数字(例如“15st”)。