我正在学习一门新的语言,我用aprox创建了一个DB。2500个单词和2500个单词示例。我创建了一个PHP/MySQL web UI,其中基本上显示每个单词的图片,当您单击它们时,它将播放单词的音频。还有一个上下文菜单可以触发一个弹出div,该div匹配并显示单词出现的所有示例
我一直在使用REGEXP'[[:<:]]$word[[:>:]]'
,但是我想过滤掉一些单词的前缀/后缀,它们不会给单词增加任何真正的意义(比如英语中的后缀-ing)。我解决这个问题的一种方法是在词缀开头的单词中加一个连字符,这样正则表达式仍然与单词匹配,但这并不完全符合语言处理拼写的方式。还有一些我不想过滤的词的不同组合,因为它们的意思完全不同。这里有一些伪示例,其中匹配的单词仅为“word”,前缀和后缀我想过滤为pre1
,pre2
。。。和{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[[:>:]]'
这对于一个异常很好,但是对于多个异常,它会变得混乱
诚然,我对正则表达式非常缺乏经验,我所能做的大部分工作都是简单的例子,我必须仔细阅读。这可以用一个简短高效的正则表达式来完成吗
这就是你要找的吗
Online demo
若你们正在寻找一个匹配的整行,那个么试着在正则表达式下面,并从索引1的匹配组中得到If
Online demo
使用
preg_match_all
获取所有匹配的组相关问题 更多 >
编程相关推荐