正規表現 「否定先読み(Negative Lookahead)」
ばうばう わんわん
ファイル整理の
振り分け作業
かっと あんど とらい (???)
な
日々である
そんな状態で
ちょっと 一工夫したくて
【Gemini】様に ご相談・・・
にゃあにゃあ ごろごろ にゃぁ~~~
# ==== 【Gemini】様
正規表現パターンのご相談ですね!
結論から言うと、「『謎』から始まって、その直後に『カブトカニ』が続かない
もの」という条件であれば、Pythonの正規表現でバッチリ実現できます。
お探しの表記(`NOT` のようなもの)は、
正規表現では
「否定先読み(Negative Lookahead)」 という
テクニックを使います。
書き方は `(?!文字列)` です。これを組み合わせると、以下のようなパターンに
なります。
解決する正規表現パターン
```python
r'^謎(?!のカブトカニ)'
```
※ご提示のテキストが「カフトカニ」になっていたので、もし正確にマッチさせ
たい場合は `r'^謎(?!のカフトカニ)'` にしてください。
どういう仕組み?
* `^` : 文字列の先頭からスタート
* `謎` : 最初に「謎」という文字がある
* `(?!のカブトカニ)` : 【ここがポイント】
「謎」のすぐ後ろの文字を見た
ときに、「のカブトカニ」という文字列が続いていなければ合格!(続く場合は
不合格・スルー)
判定結果のイメージ
* `謎の遺跡.pdf`
先頭が「謎」で、後ろが「の遺跡」(「のカブトカニ」ではない)ので 【ヒッ
ト!】
* `謎のカブトカニ大量死...`
先頭が「謎」だけど、後ろが「のカブトカニ」なので 【スルー!】
* `怪獣の謎.pdf`
そもそも「謎」から始まっていないので 【スルー!】
# ==============================
べんり で ある
じじぃ~
