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、スペースのクラスの ように、
+前の要素+が少なくとも1回は検出される必要があることを意味します。

于 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 に答える