Java 如何检查字符串是否包含某个子字符串,如[3:0]

Java 如何检查字符串是否包含某个子字符串,如[3:0],java,regex,string,match,contains,Java,Regex,String,Match,Contains,我正在进行一个项目,在这个项目中,我需要搜索一个特定的字符串标记,并查找该标记是否具有[3:0]数字格式,我如何检查它?我在堆栈溢出上搜索了引用,我可以找到如何在如下字符串中搜索“{my string}:”: String myStr = "this is {my string: } ok"; if (myStr.trim().contains("{my string: }")) { //Do something. } 但是,找不到如何搜索正则表达式中的字符串是否包含数字,我尝试使用

我正在进行一个项目,在这个项目中,我需要搜索一个特定的字符串标记,并查找该标记是否具有[3:0]数字格式,我如何检查它?我在堆栈溢出上搜索了引用,我可以找到如何在如下字符串中搜索“{my string}:”:

String myStr = "this is {my string: } ok";
if (myStr.trim().contains("{my string: }")) {
    //Do something.
} 
但是,找不到如何搜索正则表达式中的字符串是否包含数字,我尝试使用以下方法,但无效:

String myStr = "this is [3 string: ] ok";
if (myStr.trim().contains("[\\d string: ]")) {
    //Do something.
} 

请帮忙

不能在
字符串#contains
中使用正则表达式,而应将
.matches()
与正则表达式一起使用

for "[int:int]" use \\[\\d*:\\d*\\]  it's working
要匹配较大字符串中类似于
[3 string:
-like的模式(其中
string
是一个文字
string
),请使用类似正则表达式的
(?s)。*\[\\d+\\s+string:\\s*\].

String myStr = "this is [3 string: ] ok";
if (myStr.matches("(?s).*\\[\\d+\\s+string:\\s*\\].*")) {
    System.out.println("FOUND");
} 

正则表达式将从字符串开始的任意数量的字符与
[
+1个或多个数字+1个或多个空格+
字符串之前的
*
(尽可能多)匹配:
+0个或多个空格+
]
+0个或多个字符,直到字符串结束

(?s)
内部修饰符也使点匹配换行符

注意,两边都需要
*
,因为
.matches()
需要完整的字符串匹配

要匹配较大字符串中的类似模式,请使用:

"(?s).*\\[\\d+\\s*:\\s*\\d+\\].*"


如果
周围不允许有空格,请删除
\\s*

它应该是
\\[(\\d+\\\]
字符串
不解析正则表达式。字符
[]
在正则表达式中是特殊的。因此,在您切换到
String
中的相应方法后,请查看,其中有很多关于正则表达式的信息;如果(myStr1.trim().contains(“\[(\\d+)字符串:\]”){//Do something.System.out.println(“它在这里!”);}作为提示:在线尝试正则表达式解析器,例如。