我在 php 中有一些代码,我使用 preg_grep 以任何顺序匹配多个单词,这些单词可以存在于任何上下文中。我正在尝试将其转换为 java,但我似乎无法弄清楚。
我用于将关键字转换为正则表达式字符串的 php 代码是:
function createRegexSearch($keywords)
{
$regex = '';
foreach ($keywords as $key)
$regex .= '(?=.*' . $key . ')';
return '/^' . $regex . '/i';
}
它会创建一个类似于: /^(?=.*bot)/i 的正则表达式字符串 - 它应该匹配机器人、机器人、机器人等。相同的正则表达式字符串似乎在 java 中不起作用,这让我感到困惑。目前在java中,我使用包含创建了类似的效果,但更愿意使用正则表达式。
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());
}