繁体   English   中英

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

[英]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");
} 

IDEONE 演示

正则表达式将在[ +1 或更多数字+1 或更多空格+ string: +0 或更多空格+ ] +0 或更多任何字符之前匹配从字符串开头的任意数量的任何字符与.* (尽可能多)直到字符串的末尾。

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

请注意,我们需要两边都使用.* ,因为.matches()需要完整的字符串匹配。

要在较大的字符串中匹配[3:3]类的模式,请使用:

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

查看另一个 IDEONE 演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM