Java 如何检查字符串是否包含某个子字符串,如[3:0]
我正在进行一个项目,在这个项目中,我需要搜索一个特定的字符串标记,并查找该标记是否具有[3:0]数字格式,我如何检查它?我在堆栈溢出上搜索了引用,我可以找到如何在如下字符串中搜索“{my string}:”: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. } 但是,找不到如何搜索正则表达式中的字符串是否包含数字,我尝试使用
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(“它在这里!”);}作为提示:在线尝试正则表达式解析器,例如。