上記は正規表現を使う UNIX (POSIX) コマンドですが、シェルスクリプトで使うなら ERE だけを覚えれば十分だとわかると思います。例外は expr ぐらいですが、あまり使わないと思います。人によっては対話型シェルから less やvim を使っていると思いますが、これらも全て ERE をサポートしています。ちなみに egrep は POSIX 準拠ではなくなったコマンドです。 sed -E (ERE) は POSIX Issue 8 で標準化される(予定) もともと sed コマンドは BRE にしか対応しておらず、sed -E または sed -r は BSD または GNU の拡張機能なので厳密に POSIX に準拠したい場合は使用してはならないと言われていたこともありました。しかしそれはもう昔の話です。sed -E は POSIX で標準化されます。もはや最新のよく使われ
(Last Updated On: )前のエントリでStackExchangeがReDoSで攻撃されサイトがダウンした問題を紹介しました。少しだけ掘り下げて見たところ、正規表現だけでメールアドレスをチェックしている場合、壊滅的なReDoS(十分短い文字列で指数関数的に実行時間が増加する)が可能なことが判りました。 結論を書くと、正規表現でのメールアドレスチェックは見直すべき、です。(特にRubyユーザー) 追記:影響範囲はメールアドレスチェックに限らないので、正規表現チェックは全体的に見直さないと、どこが脆弱なのか判りません。見直してチェックしたとしても、それが完全であったと保証することは困難です。ネット検索して直ぐに見つかった検索パターンは非常に脆弱であったこと、メールアドレスのマッチパターンは脆弱になりやすい繰り返しの繰り返しが含まれること、これらがあったのでタイトルが「正規表現でのメ
\s- という正規表現はスペースEmacs の正規表現を見ていたら "\s-" という表現が出て来た。 良くわからなかったが、何となくスペースが入る位置だったので、Emacs 正規表現 スペース で検索したら一発で出た。 "\s-" が示すのは 空白、 \t , \n かな。 ついでに他の正規表現を調べた。EmacsWiki: Regular Expression シンタックス 分かりきってるのは省いてある。 表現英語説明 意味 \w word constituent 文字列(文字、数字) \b word boundary 文字列の区切り文字(空白とか、改行) \sc character with c syntax (e.g. \s- for whitespace char) わからん C言語での文字列? \< \> start\end of word 文字列の始まり、終わり \_
find コマンドの検索では専ら -name オプションを使う。これだと細かいファイル名指定が出来ない。先日、正規表現が使えると教えてもらったのでメモ。 画像検索を例に... JEPG, PNG 画像を検索してみる。-name オプションを使う場合はこんな感じ。二回に検索を分ける。 $ find . -name '*.jpg' $ find . -name '*.png' 正規表現を使う 正規表現を使う場合、検索開始パスの前に -E オプションを付ける。検索には -name の代わりに -regex を使う。拡張子 .jpg と .png なファイルを検索する場合はこんな感じ。 $ find -E . -regex '^.+\.(jpg|png)$' 大文字・小文字を無視したいWindows 系のソフトを使うと、ファイル名が大文字だったりする。アルファベットの大文字・小文字を無視させて検
2.REGEXP_INSTR関数 次に、REGEXP_INSTR関数です。指定した正規表現に一致する部分が何文字目かを返します。 構文 REGEXP_INSTR(文字列または列名,条件)SQL> SELECT COL1,REGEXP_INSTR(COL1,'[0-9]') , 2 REGEXP_INSTR(COL1,'%') from TEST_REGEXP; COL1 REGEXP_INSTR(COL1,'[0-9]') REGEXP_INSTR(COL1,'%') ---------- -------------------------- ---------------------- ABCDE01234 6 0 01234ABCDE 1 0 @|=)(9&%$# 6 8 あいうえ3 5 0 6 rows selected.
文章の中からあるパターンにマッチする部分があるかどうかを調べる事は比較的多く使われます。完全に一致した部分があるかどうかを調べるだけではなく、より複雑なパターンを作成するために用意されたのが正規表現です。正規表現で用意されている構文や特殊な文字を組み合わせる事で、複雑な条件を持つ検索パターンを簡潔に定義することができます。ここではRuby における正規表現の使い方について解説します。 ※ 正規表現については「正規表現入門」もあわせてご参照頂くと分かりやすいかと思います。
Emacs で正規表現を使うならば re-builder を使うことをおすすめします。 例えば、正規表現を良く使うシチュエーションとして置換があります。 M-x replace-regexpで置換対象文字列を正規表現で指定し、何に置換して欲しいかを指定するわけです。 行頭に // を追加してソースをコメントアウトしたいのであれば M-x replace-regexp Replace regexp: ^ ← ^ を入力 Replace regexp ^ with: // ← // を入力のように置換をします。(この場合は、comment-region が最適解ですが) 例に挙げたような簡単な正規表現であれば、間違いようもなく問題ないのですが、ちょっと複雑な置換になると話は変わります。 以下のようなコードがあるとしましょう。 byte* buf = new byte[32]; unsigned
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く