Php 使用正则表达式匹配整个单词,同时忽略单词的词缀

Php 使用正则表达式匹配整个单词,同时忽略单词的词缀,php,mysql,regex,word-boundaries,Php,Mysql,Regex,Word Boundaries,我正在学习一门新的语言,我用aprox创建了一个DB。2500个单词和2500个单词示例。我创建了一个PHP/MySQL web UI,其中基本上显示每个单词的图片,当您单击它们时,它将播放单词的音频。还有一个上下文菜单可以触发一个弹出div,该div匹配并显示单词出现的所有示例 我一直在使用REGEXP“[[::]]”,但是我想过滤掉一些单词的前缀/后缀,它们不会给单词增加任何真正的意义(比如英语中的后缀-ing)。我解决这个问题的一种方法是在词缀开头的单词中加一个连字符,这样正则表达式仍然与

我正在学习一门新的语言,我用aprox创建了一个DB。2500个单词和2500个单词示例。我创建了一个PHP/MySQL web UI,其中基本上显示每个单词的图片,当您单击它们时,它将播放单词的音频。还有一个上下文菜单可以触发一个弹出div,该div匹配并显示单词出现的所有示例

我一直在使用REGEXP
“[[::]]”
,但是我想过滤掉一些单词的前缀/后缀,它们不会给单词增加任何真正的意义(比如英语中的后缀-ing)。我解决这个问题的一种方法是在词缀开头的单词中加一个连字符,这样正则表达式仍然与单词匹配,但这并不完全符合语言处理拼写的方式。还有一些我不想过滤的词的不同组合,因为它们的意思完全不同。这里有一些伪示例,其中匹配的单词仅为“word”,前缀和后缀,我想过滤为
pre1
pre2
。。。和
suf1
suf2
。。。而我不想过滤为
xxx

1. Xxx xxx WORDsuf1 xxx xxx xxx.
2. Xxx xxx WORDsuf2 xxx xxx xxx.
3. Xxx xxx pre1WORDsuf1 xxx xxx xxx.
4. Xxx xxx WORD xxx xxx xxx.
5. Xxx xxx pre1WORD xxx xxx xxx.
6. Xxx xxx pre2WORDxxx xxx xxx xxx.
7. Xxx xxx xxxWORDxxx xxx xxx xxx.
8. Xxx xxx pre1WORDxxxsuf1 xxx xxx xxx.
9. Xxx xxx pre1xxxWORDsuf1 xxx xxx xxx.
10. Xxx xxx xxxWORDxxx xxx xxx xxx.
在上面的例子中,我想匹配1,2,3,4,5,但我不想匹配6,7,8,9,10。我开始添加OR子句,例如:

REGEXP  '[[:<:]$word[[:>:]]|[[:<:]]$word$suffix[[:>:]]'
REGEXP'[[::].[[:::]]
这对于一个异常很好,但是对于多个异常,它会变得混乱


诚然,我对正则表达式非常缺乏经验,我所能做的大部分工作都是简单的例子,我必须仔细阅读。这可以用一个简短高效的正则表达式来完成吗?

这就是你想要的吗

(\b(pre1|pre2)?WORD(suf1|suf2)?\b)

若你们正在寻找一个匹配的整行,那个么试着在正则表达式下面,并从索引1的匹配组中得到If

(.*(\b(pre1|pre2)?WORD(suf1|suf2)?\b).*)


使用
preg\u match\u all
获取所有匹配的组。

pre1WORDsuf2是否有效匹配?是pre1WORDsuf2是否匹配。基本上,我有一个需要忽略的前缀和后缀的列表,只要它们是唯一添加到根中的东西,那么它们的任何组合都是匹配的。看看答案和演示。谢谢,效果很好。除了mysql之外,单词边界是不同的。我使用了:REGEXP'[[::]]'我对php没有任何概念,我只是和你分享了regex模式。