文中でパターンを一致させたいのですが、*instance*stuck*
インスタンスとスタックの間の単語数は1〜3にすることができます。Javaで正規表現を使用してこのパターンを作成するにはどうすればよいですか。
例えば:
- 「インスタンスがスタックしている」はパターンに一致します
- 「インスタンスがスタックした」はパターンに一致します
- 「xyzのサーバー123のインスタンスがスタックしている」はパターンと一致しません
この方法でテストしてみることができます
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回は検出される必要があることを意味します。
これで試してください:instance( \w+){1,3} stuck
多分:
instance (\w* ){0,3}stuck
これは、奇抜な空白にも一致します。
instance\s*(\w*\s*){0,3}stuck