preg_grepを使用して作成したphpのコードを使用して、任意のコンテキストに存在する可能性のある任意の順序で複数の単語を照合します。私はそれをJavaに変換しようとしていますが、理解できないようです。
キーワードを正規表現文字列に変換するための私のphpコードは次のとおりです。
function createRegexSearch($keywords)
{
$regex = '';
foreach ($keywords as $key)
$regex .= '(?=.*' . $key . ')';
return '/^' . $regex . '/i';
}
/^(?=.*bot)/iのような正規表現文字列が作成されます。これはロボット、ロボット、ボットなどと一致するはずです。同じ正規表現文字列はJavaで機能しないようで、混乱を招きます。現在Javaで、containsを使用して同様の効果を作成しましたが、正規表現を使用したいと思います。
for (Map.Entry<String, String> entry : mKeyList.entrySet())
{
boolean found = true;
String val = entry.getValue().toLowerCase();
for (int i = 0; i < keywords.length; i++)
{
if (!val.contains(keywords[i].toLowerCase()))
found = false;
}
if (found)
ret.add(entry.getValue());
}