如何在一个句子中查找一个单词,这个单词也是同一个字符串中一个大单词的一部分?

时间:2016-04-13 21:16:37

标签: java string pattern-matching

我有一个像这样的字符串

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:?

1 个答案:

答案 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:\bword boundary
  • .* - 匹配任何0+个字符(因为matches需要完整字符串匹配所必需的)。

注意:如果您不关心:之后的Long,可以使用.matches("(?s).*\\bLong\\b.*")以便Long可以匹配总而言之。