このようなコマンドに一致するものを取得しようとしています。
[AUTR| <version_software> | <version_protocol> | <msg> ]
[PING]
最初のコマンドでこれに一致するものを見つける正規表現は何ですか?
AUTR
version_software
version_protocol
msg
これはそれを解析するコードです:
String[] tokens = msg.replace('<',' ').replace('>',' ').replace('[', ' ').replace(']', ' ').split("\\|");
for (int i=0; i<tokens.length; i++) tokens[i] = tokens[i].trim();
正規表現ソリューションでどのようにできるのか疑問に思っているだけです。
編集:
グループをより簡単な式で一致させようとしていますが、このコードでは m.groupCount への呼び出しで 1 が返されます... しかし、それを印刷しようとすると... この例外 "java.lang.IllegalStateException: 一致が見つかりませんでした" がスローされます"
Pattern pattern = Pattern.compile("([\\w+])");
Matcher m = pattern.matcher("[AUTR]");
for (int i=0; i<m.groupCount();i++)
{
System.out.println(m.group(i));
}