私は新しい言語を学んでおり、約でDBを作成しました。2500 の単語と 2500 の単語の例。基本的に各単語の写真を表示するPHP / MySQL Web UIを作成し、それらをクリックすると単語の音声が再生されます。単語が出現するすべての例に一致して表示するポップアップ div をトリガーするコンテキスト メニューもあります。
私は REGEXP を使用しています'[[:<:]]$word[[:>:]]'
が、除外したい単語の接頭辞/接尾辞がいくつかあり、単語に実際の意味を追加しません (英語の接尾辞 -ing など)。私がこれを回避した1つの方法は、接辞が始まる単語にハイフンを入れて、正規表現が単語と一致するようにすることですが、これは言語がスペルを処理する方法に完全には当てはまりません. 意味がまったく異なるため、フィルタリングしたくない単語のさまざまな組み合わせもあります。詳細に入ることなく、一致した単語が単に「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[[:>:]]'
これは 1 つの例外では問題なく機能しますが、複数の例外では面倒になります。
確かに、私は正規表現にかなりの経験がありません. これは短く効率的な正規表現で行うことができますか?