home > trips > You The Tripper☆ > 見知らぬで正規表現検索 | site map

正規表現を使って検索してみよう!
〜見知らぬ国のトリッパー(w編〜

見知らぬ国のトリッパー(wで使えるメタ文字は、

以上の10種類です。これを使って複数のトリプを検索してみましょう。

正規表現って何よ?って人は、「正規表現を使って検索してみる」を読んでみてください。

見知らぬ国のトリッパー(wの設定は、「大文字小文字を区別」と「正規表現」にチェックが入っていることを前提に説明します。また、末尾一致の検索をする際には、10文字目には.26AcEgIkMoQsUwYの16文字しか指定出来ないことを頭に入れておいてください。

正規表現は短ければ短いほど検索速度が低下しないようです。知恵を絞って短く書くように頑張ってみませう。ここで自分が書いてるものも絶対ではありません。てか、所詮ボーヤがすることなので、もっと短く出来たりする可能性大です。「こっちの方が効率的だぞ(#゚Д゚)ゴルァ!!」とかありましたら、掲示板などで突っ込んでくらさいオナガイシマス!

取り敢えずどんな感じで使うのさ?

正規表現で検索したいトリプを現す方法はいろいろあります。

まずは見知らぬ国のトリッパー(wの通常検索と同じような使い方から。

通常検索の「先頭」にチェックを入れてboyaを探しているのと同じになるのが、ただ単に

^boya

と書くものです。「先頭一致でboya」がある文字列にマッチします。

末尾一致で探す場合、

BOYA$

と書きます。10文字目には.26AcEgIkMoQsUwYの16文字しか出てこないため、

boya$

とか書いたら絶対にヒットしません。確率的には奇跡的な10完が出ることがあっても、.26AcEgIkMoQsUwYの16文字以外を10文字目に指定すると絶対にヒットしないのです。.26AcEgIkMoQsUwYの16文字以外の文字を指定していても、特にエラーは出ないので注意汁!

簡単すぎるけど、これが「通常検索」と同じ形の検索方法です。

じゃ、通常検索との違いって何よ?

「通常検索」では、1つのトリプしか検索出来ません。「正規表現検索」の強みは、複数のトリプを同時に検索出来るところにあります。

どーやって複数検索するのよ?

基本的には|()を駆使します。例えば、先頭一致でkazeboyとkazeboyaを検索したい場合、

^kazeboy|^kazeboya

と書いて検索します。

しかし、()を使えば、上の正規表現は^(kazeboy|kazeboya)と纏めることが出来ます。

お気づきの通り、^kaze(boy|boya)と纏めることも可能。

さらに言えば、この例の場合、^kazeboyという正規表現はkazeboyaという文字列にもマッチするので、kazeboyaはわざわざ書かなくてもいいです。あくまで纏めの例として書いてみますた。

上のように、()|を駆使すれば複数のトリプを検索していくことが出来ます。

例えば、notanpe、Notanpe、hosyu、Hosyuを検索したい場合、

^(notanpe|Notanpe|hosyu|Hosyu)

と書けば桶です。ですが、

^([Nn]otanpe|[Hh]oshu)

と書いた方がスッキリします。文字列は短い方が(・∀・)イイ!!ようなので、工夫してみてください。

数字だけのトリプを検索したい!

以前常駐スレの方で紹介された書き方です。これが最も短いかと思います。

^[0-9]+$

これの意味は、^先頭から[0-9]0から9までのどれかが+一回以上の繰り返しで$末尾まで一致している、というものです。

^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][26]

と書いても同じですが、短い方が吉です。

^[0-9]+$という正規表現は、正確には「3」や「86」みたいな数字にも「マッチ」します。が、トリッパーでは10文字全てが数字のものしかヒットしてきません。トリプは10桁のものしかないため、結果的に10文字全て数字のものにしかマッチしない(検索でhitしてこない)と勝手に思っています。以下の説明もこんな感じで、「トリッパーでの検索では」という留保付きで読んでくらさい。

ローマ字読み出来るトリプを検索したい!

2文字で読むローマ字読みなら何とか…。例えば、「つ」を「tsu」ではなくて「tu」とするのでよければ、です。

子音として「akstnhfmyrw」、母音として「aiueo」を用意。それぞれのどれか1つが交互に出てくればいいわけです。「どれか1つ」は、「[」と「]」で括ればいいので、

[akstnhfmyrwAKSTNHFMYRW][aiueoAIUEO]これで1文字表現できます(大文字小文字混合になりますが)。てことは、

^[akstnhfmyrwAKSTNHFMYRW][aiueoAIUEO][akstnhfmyrwAKSTNHFMYRW][aiueoAIUEO][akstnhfmyrwAKSTNHFMYRW][aiueoAIUEO][akstnhfmyrwAKSTNHFMYRW][aiueoAIUEO][akstnhfmyrwAKSTNHFMYRW][AIUEo]

とすればいい訳ですが、()を使えば

^([akstnhfmyrwAKSTNHFMYRW][aiueoAIUEO])+$

これで済みます。短くて(・∀・)イイ!!

もちろん、「大文字小文字区別あり」のチェクを外して^([AKSTNHFMYRW][AIUEO])+$としても、大文字小文字混在のローマ字読みトリプが出てきます。

大文字だけでローマ字読みしたいときは大文字だけ、小文字だけなら小文字だけ書けば(・∀・)イイ!!でつ。大文字だけ、または小文字だけ、を同時に検索したいのなら

^(([AKSTNHFMYRW][AIUEO])+$|([akstnhfmyrw][aiueo])+$)

でいいかと。

ローマ字読み情報!

長い長い“春” 【トリップ・シーカー】常駐スレpart72のレス75、いつぞやの875サソからの情報をば。

82 :ひよこ名無しさん[sage]:04/04/10(土) 02:15
そしてまた名無しにヽ(´ー`)ノ
^([kstnhmyrw]?[aiueo])+$
↑子音が無くてもローマ字は成立

さらにいつぞやの875サソより、早口言葉ジェネレーター(wの紹介!

85 :ひよこ名無しさん[sage]:04/04/10(土) 03:26
>>83
オヤスミ!

小ネタ。
^(([BDGHKMNPRSTZ])\2?[AIUEO]|N|WA|[BGHJKMNPR]?Y[AUO]|[CS]H[AIUO])+$
・「っ」や「ん」も出るローマ字表現。
・例 MenMokePPE : #n5KJ8u0t
・使用方法
 出る速度で音読する。

名付けて早口言葉ジェネレーター(w

1〜1000get[./]トリプを探したい!

先頭から数字が1つ以上3つ以下続いて、そのあとにget[./]が来る、ということを正規表現で表せばいいのですが…見知らぬ国のトリッパー(wでは「1つ以上3つ以下」という正規表現が使えません。そこで、

^[1-9][0-9]?[0-9]?0?get[./]

とすればいいかと。?は「0回か1回」を表すので、これで1get[./]から1000get[./]までが検索対象になります。

また、

^[0-9]+get[./]

という書き方もあります。これだと0get[./]や10000get[./]も検索対象になりますが、どうしても短くしたい場合などは使うといい鴨。自分の環境では、^[0-9]+get[./]の方が若干速いかなーー・・・・・・?って感じですた。

当然、1桁getが最も出やすいので(文字数短いから)、「もう1桁getはいらないYO!」って場合は、

^[1-9][0-9]+get[./]

にすればいいです。

「数字のあとはgetでもGetでもGETでも(・∀・)イイ!!」って場合は、

^[0-9]+([Gg](et|ET))[./]

と書けば桶です。この場合、gETにもマッチします。そんなの(・A・)イヤダ!!って場合は、

^[0-9]+([Gg]et|GET)[./]

と書けば吉。()は使える数が限られていますし、色々工夫してみてくらさい。

同じように、Lv.のあと数字とか、No.のあと数字とかも表現できます。

1〜1000getter[./]も一緒に探したいんだけど...

1000getter[./]は文字数的にあれですが…。あと、数字3桁getter/も10文字目に/が出ないのであれですが。。。

^[0-9]+[Gg](et|ET)(ter|TER)?[./]

これで探せます。余計なものも出てきますが。。。

kago.aiてトリプが( ゚д゚)ホスィ…

「もう、kago/aiでもKago.aiでもKAGO/AIでもいいからとにかくkagoとaiが入ってて間が区切られてるものが( ゚д゚)ホスィ…けど、7文字はなかなかhitしないから、この際間の区切りはなくてもいいや…一応区切り蟻も検索対象に入れたいけど…。」てな場合の書き方です。

^([Kk]ago|KAGO)[./]?([Aa]i|AI)

「先頭一致にも拘らないからとにかく( ゚д゚)ホスィ…」てなら、

先頭一致を外せば吉。

連物が欲しいんだけど?

\使うです。

(.)\1\1\1\1\1

これで6連物を検索します。上のget酉と6連以上の酉を同時に探したい場合、

^([0-9]+([Gg](et|ET))|(.)\4\4\4\4\4)

となります。(.)\4\4\4\4\4は、「先頭から4番目の()の中身」を参照しています。先頭からのカッコの数を数え間違えないようにしてくらさい。

============取り敢えずここまで書いた============

copyright©:2003by◇ 風に立つboy ◇,all rights reserved,since20040328