我有一个像这样的字符串
String test = "[Short: 1234, Long: 3456, At_Long: 1234, Get_Long: 56788]"
我需要确保我的字符串中包含长字样。有时,字符串中内容的顺序会发生变化。例如
String test = "[Long: 1234, Short: 3456, At_Long: 1234, Get_Long: 56788]"
所以,当我寻找
时test.contains(" Long:")
我什么都没得到,因为订单偶尔会改变。如果我删除了前导空格,它也会考虑At_Long,Get_long。如何让系统只查找Long:?
答案 0 :(得分:2)
您可以将String#matches
与(?s).*\\bLong:.*
正则表达式
String test = "[Long: 1234, Short: 3456, At_Long: 1234, Get_Long: 56788]";
System.out.println(test.matches("(?s).*\\bLong:.*"));
请参阅regex demo
<强>解释强>:
(?s)
- 启用DOTALL模式(.
也开始匹配换行符).*
- 匹配任何0+个字符\\bLong:
- 匹配整个单词Long:
(\b
是word boundary).*
- 匹配任何0+个字符(因为matches
需要完整字符串匹配所必需的)。 注意:如果您不关心:
之后的Long
,可以使用.matches("(?s).*\\bLong\\b.*")
以便Long
可以匹配总而言之。