C/MigemoでAND検索するには。

検索結果を絞り込むために、「AかつBを含む」という条件を設定したいことがあります。

ところが、Pythonのreモジュールには、論理和(AまたはB)はあっても論理積(AかつB)はありません。というか、正規表現というもの自体に論理積がないのかもしれません。if文の条件にはできるのに。

PDFのお料理レシピを検索する。で、recipe tamago cabbageができませんと書いたのですが、これを実現するには篩がけを2回すればいいことになります。
つまり、"tamago"で検索した結果に対してさらに"cabbage"で検索を行って絞り込むわけです。

前回のコードでは、一致した結果をrecipe_files.append()で追加していきましたが、2回め以降の絞り込みでは、一致しない要素をrecipe_files.remove()で取り除いてやればいけそうです。

よくよく考えてみると、これはC/Migemoに限らずre.search()でAND検索をやるときにも使えそうです。汎用性を考えるなら、モジュール化してやれば便利そうなので、ちょっと考えてみます。(次回に続く)

0 件のコメント:

コメントを投稿

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...