Php 正则表达式

Php 正则表达式,php,regex,preg-match,expression,Php,Regex,Preg Match,Expression,我不熟悉PHP中的正则表达式,我想知道的是如何匹配相等或相似的单词 示例: 我有“designer”和“design”两个词,如果我们尝试将designer与design匹配,将返回false,但是如果我们尝试将design与designer匹配,将返回匹配。我需要使用一个preg_match语句匹配这两种情况 有人能帮我吗?我想你要找的是一个可选的匹配项: /design(?:er)?/ 括号中的“er”组、“?:”使其成为非捕获组,下面的“?”使该组成为可选组 更一般地说,如果您想要捕获一

我不熟悉PHP中的正则表达式,我想知道的是如何匹配相等或相似的单词

示例:

我有“designer”和“design”两个词,如果我们尝试将designer与design匹配,将返回false,但是如果我们尝试将design与designer匹配,将返回匹配。我需要使用一个preg_match语句匹配这两种情况


有人能帮我吗?

我想你要找的是一个可选的匹配项:

/design(?:er)?/
括号中的“er”组、“?:”使其成为非捕获组,下面的“?”使该组成为可选组

更一般地说,如果您想要捕获一个单词或该单词的任何更长版本:

/design\w*/

匹配“design”和零个或更多(“*”)字字符(“\w”)。

我相信您正在寻找词干:


如果你只是想匹配这两个词,那么就按照nickb的建议去做,保持简单。如果您试图在许多单词上复制这种匹配,那么您可以使用这个PorterStemmer类:

不要在这样一个简单的用例中使用正则表达式。使用字符串函数并检查输入是否等于“design”或“designer”。“如果我们尝试将designer与design匹配,将返回false,但如果我们尝试将design与designer匹配,将返回匹配”。你能解释一下吗?如果文本包含
designed
,你希望发生什么?你的建议很有效,但我是用PHP动态完成的,所以我需要一个更好的方法。我将尝试检查两个字符串中最大的字符串是什么,并尝试从小字符串中进行匹配。这样做,就有可能大词包含小词。解释并不完全正确。括号组和捕获;下面的
使该组成为可选组,但如果该组存在,
er
将始终被捕获。这充其量只是一个小小的吹毛求疵,但它解释了为什么
/design(?:er)?/
(使用非捕捉括号)将是更合乎逻辑的选择。@RafaelFragoso我只能对你的问题发表评论。如果您提供PHP代码作为示例,我们可以详细说明您的情况。