PHP中的正则表达式模式,从过去的形式提取英语单词到现在,反之亦然......?

时间:2015-10-29 07:59:45

标签: php regex

我正在寻找一个PHP正则表达式模式,它可以将英语单词从过去的形式提取到呈现,连续形式到现在,反之亦然。

示例:想要 - >想要,玩 - >玩,熟 - >厨师

烹饪 - >煮熟的,玩的 - >播放....

另外:照顾 - >照顾,玩 - >玩,烹饪 - >厨师

护理 - >关怀,玩耍 - >玩等等......

1 个答案:

答案 0 :(得分:1)

如果你能将你的单词标识为动词,那么你的第一个要求就很简单了:

$present_tense = preg_preplace('/(ed)$/', '', $word);

但即使连续形式的前两个例子也表现出不规则的行为:有了关怀,有一个e来获得关怀,有玩耍,只有被删除。

如果你有单词列表,你可以生成模式 - >替换数组,您可以在单个preg_replace()调用中使用:

$patterns = array();
$patterns[0] = '/\\bcare\\b/i';    // these can be automatically
$patterns[1] = '/\\bplay\\b/i';    // generated if you have only the
$patterns[2] = '/\\bcook\\b/i';    // words in an array
$replacements = array();
$replacements[2] = 'caring';
$replacements[1] = 'playing';
$replacements[0] = 'cooking';
$present_tense = preg_replace($patterns, $replacements, $sentence);

这也适用于句子,因为要改变的词是已知的并且可以由正则表达式挑选出来。 str_replace在这里不合适,因为它无法识别字边界。

这就是你可以用正则表达式做的事情。要获得更完整的解决方案,您必须搜索更复杂的库,例如上面评论中提到的库。