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

Java 如何查找字符串是否包含后跟特定字符串的数字,java,string,parsing,Java,String,Parsing,我有这样一个字符串: String str = "Friday 1st August 2013" 我需要检查:如果字符串包含“任意数字”后跟“st”字符串,则打印“是”,否则打印“否” 我试过:if(str.matches(.*\\dst”)和if(str.matches(.*\\d.st”),但它不起作用 有什么帮助吗?使用: if ( str.matches(".*\\dst.*") ) 从字符串的开头到结尾匹配正则表达式模式。锚定^和$是隐式的。因此,您应该使用与完整字符串匹配的模式

我有这样一个字符串:

String str = "Friday 1st August 2013"
我需要检查:如果字符串包含“任意数字”后跟“st”字符串,则打印“是”,否则打印“否”

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

有什么帮助吗?

使用:

if ( str.matches(".*\\dst.*") )
从字符串的开头到结尾匹配正则表达式模式。锚定
^
$
是隐式的。因此,您应该使用与完整字符串匹配的模式

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

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

正则表达式可以用来匹配这种模式。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

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

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

*
后面的
是必需的,因为
*
是“贪婪的”(它将匹配整个字符串)<代码>*?是否存在“非贪婪”匹配。此外,数字可以有多个一位数(例如“15st”)。

+1但为什么要提到模式/查找?它不是必需的,而且代码较多,可读性较差。“你解释为什么他的比赛不起作用,以及如何解决它,这才是真正最好的答案。”波希米亚人。这将增加OP知识:)我想不会有任何伤害