初投稿です。
まず、パターン マッチャーと文字列分割の両方の使用方法を知っています。私の質問は、私の例で使用するのに最適なものとその理由です。または、より良い代替案の提案。
タスク: 未知の文字列内の 2 つの既知の正規表現の間で未知の NOUN を抽出する必要があります。
私の解決策:名詞の開始と終了(正規表現1と2から)と部分文字列を取得して、名詞を抽出します。
String line = "unknownXoooXNOUNXccccccXunknown";
int goal = 12 ;
String regexp1 = "Xo+X";
String regexp2 = "Xc+X";
- 最初の正規表現の後にインデックス位置を見つける必要があります。
- 2 番目の正規表現の前にインデックス位置を見つける必要があります。
A)パターンマッチャーを使用できます
Pattern p = Pattern.compile(regexp1);
Matcher m = p.matcher(line);
if (m.find()) {
int afterRegex1 = m.end();
} else {
throw new IllegalArgumentException();
//TODO Exception Management;
}
B) 文字列分割を使用できます
String[] split = line.split(regex1,2);
if (split.length != 2) {
throw new UnsupportedOperationException();
//TODO Exception Management;
}
int afterRegex1 = line.indexOf(split[1]);
どのアプローチを使用する必要があり、その理由は? 時間とメモリのどちらがより効率的かはわかりません。両方とも、私にとっては十分に読みやすいものです。