0

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

例如:

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

4 回答 4

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是空格类
+意味着+必须至少找到一次之前的元素。

于 2012-08-03T19:52:34.350 回答
0

像这样的东西:

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

在此处查看有关限制单词重复的更多详细信息。

于 2012-08-03T19:52:40.933 回答
0

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

于 2012-08-03T19:53:57.387 回答
0

也许:

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

这也将匹配古怪的空白:

instance\s*(\w*\s*){0,3}stuck
于 2012-08-03T19:55:18.967 回答