[英]How to check if string contains a certain substring like [3:0]
我正在做一个项目,我需要搜索一个特定的字符串标记并查找该标记是否具有 [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.
}
请帮忙!
for "[int:int]" use \\[\\d*:\\d*\\] it's working
您不能在String#contains
使用正则表达式,而是将.matches()
与正则表达式一起使用。
要在较大的字符串中匹配[3 string: ]
-like 模式(其中string
是文字string
),请使用像(?s).*\\\\[\\\\d+\\\\s+string:\\\\s*\\\\].*
这样的正则表达式(?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 或更多空格+ string:
+0 或更多空格+ ]
+0 或更多任何字符之前匹配从字符串开头的任意数量的任何字符与.*
(尽可能多)直到字符串的末尾。
(?s)
内部修饰符也使点匹配换行符。
请注意,我们需要两边都使用.*
,因为.matches()
需要完整的字符串匹配。
要在较大的字符串中匹配[3:3]
类的模式,请使用:
"(?s).*\\[\\d+\\s*:\\s*\\d+\\].*"
如果:
周围不允许有空格,则删除\\\\s*
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.