如何使用Java正则表达式来匹配这种模式?

时间:2012-08-03 19:48:37

标签: java regex

我想在一个句子中匹配*instance*stuck*的模式,实例和卡住之间的单词数量可以是1到3.如何用Java中的正则表达式编写这个模式?

例如:

  1. “实例卡住”将匹配模式
  2. “实例刚被卡住”将匹配模式
  3. “xyz服务器123中的实例被卡住”将与模式
  4. 不匹配

4 个答案:

答案 0 :(得分:4)

您可以尝试以这种方式进行测试

String s1 = "The instance just got stuck";
String s2 = "The instance in the server 123 at xyz is stuck";
System.out.println(s1.matches(".*instance (\\w+\\s+){1,3}stuck.*")); // true
System.out.println(s2.matches(".*instance (\\w+\\s+){1,3}stuck.*")); // false

\\w匹配任何字母数字字符,就像[a-zA-Z0-9]
\\s是空间的类
+表示必须至少找到+之前的元素。

答案 1 :(得分:0)

这样的事情:

instance(\\w\\s){1,3}stuck

查看here了解有关限制重复词语的详细信息。

答案 2 :(得分:0)

试试这个:instance( \w+){1,3} stuck

答案 3 :(得分:0)

也许:

instance (\w* ){0,3}stuck

这也将与古怪的空白相匹配:

instance\s*(\w*\s*){0,3}stuck