PHP中的Regex模式,将英语单词从过去的形式提取到现在,反之亦然.


Regex pattern in PHP that extract English word from its past form to present and vice-versa...?

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

示例:想要->想要,播放->播放,烹饪->烹饪

烹饪->烹饪,播放->播放。。。。

还有:关心->关心、玩耍->玩耍、烹饪->烹饪

关心->关心,玩->玩等等…

如果你能把你的单词识别为动词,你的第一个需求很容易:

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

但是,即使是连续形式的前两个例子也表现出不规则的行为:在关心中,添加了一个e来获得关心,在玩耍中,只删除了ing。

如果你有单词列表,你可以生成模式->替换数组,你可以在一个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在这里不合适,因为它不能识别单词的边界。

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