LoginSignup
0
0

More than 1 year has passed since last update.

正規表現 忘却録

Posted at

自分用の忘却録です。
参考やコメントはご自由に

(半角)数字

\dで検索をかけれる
例えば
012-3456-789
という電話番号は以下のようにすると検索できる

\d\d\d\-\d\d\d\d\-\d\d\d

スクリーンショット 2022-04-25 9.59.50.png

だけどいっぱい\dって書きたくないよね
なので条件付きの検索方法で回避しよう
また、条件付きの検索は以下に示す

{}による文字量指定検索

\d{n,m}で検索が可能(引数はnだけでもok!)
範囲はn以上m以下の文字数を検索する事ができる。(引数がnだけの場合だとその数しか検索がかからない)
先程の電話番号を{}を使って検索をすると

スクリーンショット 2022-04-25 10.03.34.png

\d{2,4}\-\d{3,4}-\d{3}

じゃあ海外のサイトでよく見る電話番号の形式だとこれはどう?
012(3456)789
この形式たまに見ますよね
このままだと丸括弧が邪魔でいい感じの検索結果が貰えない...
スクリーンショット 2022-04-25 10.15.48.png
じゃあどうすんの?
他の条件検索を使いましょう!

[ ]を使った文字列の検索

[a, b, .....n] (n = ∞)
検索したい文字列を[ ]の中に入れることによって[ ]内に含まれている文字列を検索をする事が可能です。
ということで以下のように検索をする

スクリーンショット 2022-04-25 10.20.39.png

両方できたー

[ ]の注意

[ ]内の -の取り扱いには注意をしてください
[0 - 9]と[-09],[09-]を例にします
[0 - 9]だと0から9までの数字を検索する事ができ、[-09],[09-]だと0,9,-の検索をしてしまい範囲が異なるので注意

文章の途中で二回目以降省略されても大丈夫なように

よく本や説明文を読む際に以降を◯◯とすると記載があると思うが今回二回目以降の記載をできればなんか良さそうじゃない??
例えば以下の文章を使う

今日は晴れています
休日の今日は予定がなくゴロゴロとします
IO社の田中さんと有名なカフェ+モカーのカフェ・モカを飲みに行きます
IO社は最近忙しそうだから約束の時間がずれないと良いのだが...
カフェモカ楽しみ!

今回の文章ではカフェ・モカと二回目にカフェモカと記載がある
カフェ・モカとカフェモカ両方検索をかけたい場合をどのようにするかが問題だ

そこで?を使った検索で回避する
n? (n: string)
?を使うことによってnがある時とない時を両方検索する事ができる

スクリーンショット 2022-04-25 11.18.52.png

カフェ[・]?モカ

これで全てのカフェ・モカを見逃さない!
だがカフェモカは取れたが店名(カフェ+モカ-)が取得できてない。よくないね
だからこれも取得するようにする

カフェ[・ +]?モカー?

これでok

だけどもうちょっと短くしたい時(特に[ ]の中身)
一文字の際には便利なメタ文字があるのだ!! 

カフェ.?モカー?

.を使うことによってなんでもいいので一文字入る文字まで検索してくれる!
カフェとモカの間に一文字何か入る際は使うと便利そう!

一文字以上の場合は??
+ を使って回避する!

連続の文字を検索

例えばこんな文章から検索をかけたい場合
カフェモカモカモカモカモカモカ
モカが後ろに続く時って毎回モカを描きたくないし'.'を繋げて曖昧な文字を検索するわけにもいかない!
そんな時に先程の+が使える!

スクリーンショット 2022-04-25 14.58.35.png

カフェ[モカ]+

これで同じ文字列を簡単に検索できる!

じゃあ中間の複数文字がある場合と無い場合の両方が可能性としてある場合は?
と感じるかもしれない。
そこでもう一つの連続に対してのアプローチとして*がある!
以下の文字列を使う
カフェモモモモモモモモモモモモモモモモモモモモモモモモモモカ

モへの情熱がある文章を検索したい!逆にモが抜けている
カフェカ

こんな時に使える!

カフェモ*カ

スクリーンショット 2022-04-25 15.14.57.png

連続した形式の検索

文字列じゃなくて同じ形式が連続している場合使えるようになればこれ実践的じゃない?
以下の文章を使いましょう!!

<menu>カフェモカ</menu>
<menu>チャイ</menu>
<menu>コーヒー</menu>
<menu>緑茶</menu>
がありますね。この連続を使って商品名を検索していきます。

>.+<で解決!(両サイドに><があるのが気になる)

今日は以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0