5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テコテックAdvent Calendar 2017

Day 2

これだけでも覚えたら便利な正規表現

Last updated at Posted at 2017-12-01

触り始めたきっかけ

新卒の時の先輩に

「正規表現って知ってる?」

と聞かれ

私「知りません・・・・」

ちょうど使っていた秀丸の検索Boxで使えたので勉強し始めたのですが

今、意外とあまり周りで使わない(使う必要がない)エンジニアも多かったので

知ってた方が検索や置換に私が便利だと思う正規表現を紹介!

正規表現

a+

aが1文字以上続く

マッチする例
aaaaaa

ab+

aの後にbが1文字以上続く

マッチする例
abbbbb

ab*

aの後にbが0文字以上続く(aだけでも引っかかる)

マッチする例
a
ab
abbb

[0-9] もしくは[\d]

0から9までの数字1文字

マッチする例
0
3
9

[a-z] か [A-Z]

aからz か AからZまでのアルファベット1文字

マッチする例(小文字の場合)
a
b
z

[179]

[]の中にある1文字

マッチする例
1
7

[^a]+

a以外のアルファベット1文字以上
a以外の文字が1文字以上

マッチする例
bbbbb
eeeee

[0-9,]+

0123456789,で構成された1文字以上

マッチする例
1,000
1,234,567

試してみたい

http://okumocchi.jp/php/re.php
で //で挟んでチェックしてみてはどうでしょう。
実際にプログラムに実装する前にここでテストすることもよくあります。

/a+/
aaaabbb
だと先頭から4文字のaaaaが引っかかる

気をつける事

正規表現を使えるようになってもあまり複雑すぎる
正規表現を書かない事。 複雑になり可読性も落ちる。
メールアドレスも全てのパターンを1つの正規表現でやろうとするととても複雑になるしメンテナンスやチェックが厳しくなる。

最後に知っておくこと

同じ「正規表現」と言えど環境により使える記述と使えない記述があります。
使いたい環境によって使える表現方法を知っておかないと特定の環境で動かなくてハマりますw

実際に仕事でこんな風に使いました。

  • csvデータの変換をしないといけない時に秀丸のマクロで正規表現の置換でデータ変換を行う
  • 置換を使ってログで必要な情報だけを出力する

実践

エディタで正規表現検索するかgrepで使うのが一番簡単なのでぜひやってみてください。

5
2
6

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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?