タグ

正規表現に関するh1saoのブックマーク (14)

  • 正規表現の先読み・後読み

    正規表現の「先読み(lookahead)」「後読み(lookbehind)」について紹介します。 正規表現の「位置へのマッチ」 正規表現は、文字列のパターンマッチに使われます。たとえば [0-9]{4} は数字4つが並ぶ文字列にマッチする表現です。 多くの正規表現は「文字列」にマッチしますが、「文字列」ではなく「位置」にマッチする表現があります。これは、アンカーと呼ばれます。また、長さ0の文字列にマッチすると考えて、ゼロ幅アサーションとも呼ばれます。 アンカーの例として、^(先頭)$(末尾)\b(単語の境界)などがあります。 この例では、cat にはマッチします。一方、category や concat は cat を含みますが前後が単語の境界になっていないためマッチしません。 先読み 先読み(lookahead)は、位置にマッチする記法の一種です。位置の指定に正規表現を使います。(?=

    正規表現の先読み・後読み
  • 心のバリアを取り去って「正規表現」に取り組む一歩を踏み出すためのメモ|DTP Transit 別館

    長年、後回しにしてきた「正規表現」。四の五の言わずにはじめようよ!と20年前の自分に伝えたく、まとめてみました。 詳しい方が見ると、乱暴だったり、おかしなところがあると思いますが、入り口に立つことが大切だと考えています(書いた人は文系・グラフィックデザイン関連です)。 はじめにたとえば、文章中に「コンピュータ」と「コンピューター」が混在していて、これを「コンピューター」に統一したいとき、あなたなら、どうしますか? 単純な検索置換なら、次のような順番で処理できます。 ❶「コンピューター」を「コンピュータ」に一括置換する ❷「コンピュータ」を「コンピューター」に一括置換する ❸ ちょっと心配なので「ーー」(音引きの繰り返し)をチェック これはこれでアリなのですが、1回の作業でできたらベターです。 しかし、「コンピュ-タ」のように正しく音引き(ー)が入力されていない場合には単純な検索置換ではお手

    心のバリアを取り去って「正規表現」に取り組む一歩を踏み出すためのメモ|DTP Transit 別館
  • ゼロからはじめるPython(33) 英単語で正規表現をマスター | マイナビニュース

    英単語で正規表現をマスターしよう 「正規表現」という言葉を聞いたことがあるだろうか。正規表現はとても便利なので、プログラマーでなくてもマスターしておきたい機能だ。多くのテキストエディタに正規表現を使った置換機能があるので、正規表現を覚えると、Pythonだけでなくあらゆる場面で活用できる。今回は、英単語辞書のデータを利用して、正規表現をマスターしよう。 英単語で正規表現とはどういうことか? 「正規表現」とは、文字列の集合を特殊なメタ文字を利用して表現する方法だ。正規表現に似た表現に「ワイルドカード」がある。ワイルドカードでは「*.txt」のようなパターンを記述することで、「abc.txt」や「書類.txt」などを表すことができる。これは主に、ファイル検索などで、拡張子「.txt」(テキストファイル)を列挙するのに役立つものだ。そして、正規表現は、このワイルドカードを何十倍も便利にしたものと

    ゼロからはじめるPython(33) 英単語で正規表現をマスター | マイナビニュース
  • あなたの知っている正規表現はもう古い! 正規表現の新常識(ES2018編) - Qiita

    2018年1月23日から25日にかけて、TC39の第62回ミーティングが行われました。TC39のミーティングでは、提案されているECMAScriptの新機能 (proposal) について審議し、各proposalのステージの移動を決定します。 今回のミーティングでは正規表現に関する幾つかのproposalがStage 4になりました。Stage 4になったproposalはES2018に組み込まれ、JavaScript (ECMAScript) に正式採用ということになります。 この記事では、JavaScriptに追加された正規表現の4つの新機能を紹介します。 s (dotAll) flag for regular expressions Proposal: https://github.com/tc39/proposal-regexp-dotall-flag 正規表現の新たなフラグとし

    あなたの知っている正規表現はもう古い! 正規表現の新常識(ES2018編) - Qiita
  • VBAの正規表現における後方参照の考え方とサンプルコード - Qiita

    記事ではExcel 2010、Microsoft Visual Basic forApplications 7.1で動作確認しています。 はじめに:VBAでの正規表現 文字列を処理するプログラミングにおいて正規表現は強力な道具です。これはVBAにおいても変わりません。 しかし、VBAでの正規表現はPerlRuby,Javaといったメジャーなプログラミング言語と異なる点が多く、そういった言語でのプログラミングに習熟している方が戸惑うことも多いと思われます。 与えられた文字列が正規表現パターンにマッチするかどうかを判断することについては検索すると情報もそこそこヒットしますが、マッチした文字列を取り出す後方参照については日語情報が少ないのが現状です。さらに、複数の後方参照を取得する方法についてはほとんど情報がありません。VBA経験は少ないですが、多少試行錯誤してしまったので知り得た情報をま

    VBAの正規表現における後方参照の考え方とサンプルコード - Qiita
  • 正規表現をサッと確認するのに重宝した神サイトを紹介してみる | DevelopersIO

    はじめに こんぬづは、ゲーム用のPCを東京に置いているため、実家に帰ってくるとゲームができなくてしんどい田中です。こういうときに限って、ゲームの実況動画を見てしまったりして余計に心を痛めています。 さて今回は、今年正規表現をサッと確認するのに重宝した Regexper を紹介します。 Regexper こんなサイトです。とてもシンプル。 以下のような特徴があります。 正規表現を図で表示してくれる 表示した図をダウンロードできる 正規表現を図で表示してくれる 入力欄に正規表現を入力して、Displayボタンを押すと、以下の画像のようにその正規表現のパターンを図示してくれます。 どんな範囲でパターンマッチしてくれるのかがとても見やすくなります。 表示した図をダウンロードできる 入力欄の右下にあるDownloadボタンを押せば、表示した図をダウンロードすることができます。 例えば正規表現の仕様を

    正規表現をサッと確認するのに重宝した神サイトを紹介してみる | DevelopersIO
  • よく使う正規表現はもうググりたくない! - Qiita

    タイトル通りによく使う正規表現を毎回ググるのが効率悪いのでまとめてみました。各言語で正規表現のサンプルを書いてみました。 正規表現式 Emailアドレス ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ ドメイン名 ^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$ インタネットURL ^(http|https)://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ユーザー名 (Twitter username) ^[a-zA-Z0-9_\-.]{3,15}$ 固定電話 ^0\d-\d{4}-\d{4}$ 携帯電話 ^(070|080|090)-\d{4}-\d{4}$ IP電話 ^050-\d{4}-\d{4}$ フリーダイヤル ^0120-\d{3}-\d{3}

    よく使う正規表現はもうググりたくない! - Qiita
  • [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita

    [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。regex 正規表現の "先読み" / "後読み" を、分かりにくいと感じるすべての人にお送りします。 --- 追記:2017/06/04 コメントにて、ご指摘を頂いております。 当記事の解釈には誤りがあります。コメントのご指摘内容をご覧いただければ幸いです。 当記事の主旨としては、"先読み・後読み" よりも "ルックアヘッド" の方が、意味を捉えやすいのでは?というものでしたが.. そもそも私の、「lookahead」の解釈(とくに、look の主語はどれなのかという部分だと思います)に、勘違いがありました。 ですので、いまのところ当記事の主題は、「"先読み" でも、"ルックアヘッド” でも、どちらでもよいけど、しっかりと厳密に理解しよう!(反省)」となります。 コメント

    [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
  • pythonの正規表現メモ - Qiita

    はじめに Pythonにはperlrubyのような正規表現リテラルはないらしい 正規表現を使用するときはreモジュールをインポートする Raw文字列 文字列リテラルの頭に rをつけると、その文字列ではエスケープシーケンスは無効となる。 (C#でいうところの@"~"みたいなやつ) "C:¥¥My Document¥¥fire¥¥test.txt" を r"C:¥My Document¥fire¥test.txt" と書ける。 rは大文字でもよい模様。 R"C:¥My Document¥fire¥test.txt" マッチ import re m = re.match(r"FIRE[0-9]+", "FIRE123") if m: print("matchした") else: print("matchしてない")

    pythonの正規表現メモ - Qiita
  • なるべく短い正規表現で住所を「都道府県/市区町村/それ以降」に分けるエクストリームスポーツ - Qiita

    rex = /ごにょごにょ/ p "東京都文京区後楽1丁目3−61".match(rex).captures #=> ["東京都", "文京区", "後楽1丁目3−61"] みたいなやつ。なるべく短く。 実用性? そんなもの、うちにはないよ。 TL;DR 「読むのめんどくさい」という人用に最初に最終結果を置いておきます (...??[都道府県])((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下松|岩国|田川|大村)市|.+?郡(?:玉村|大町|.+?)[町村]|.+?市.+?区|.+?[市区町村])(.+) あまり厳密ではないのでちゃんとしたとこでは使わないほうがいいです 住所データを用意する 郵便局からデータをダウンロードしておく。一ヶ月毎に更新されている。 → 郵便番号データ

    なるべく短い正規表現で住所を「都道府県/市区町村/それ以降」に分けるエクストリームスポーツ - Qiita
  • 正規表現を使って文字列を検索し、抽出する

    補足:ここでは正規表現の説明はしません。.NET Frameworkの正規表現の基は、「正規表現の基」で説明しています。 正規表現を使って文字列の検索し、検索された文字列を取得するには、RegexクラスとMatchメソッド(またはMatchsメソッド)を使用します。一致した要素はMatchオブジェクトとして返されます。 メールアドレスを抽出する次の例ではTextBox1に入力された文字列からメールアドレスっぽい文字列をすべて検索し、表示します。ここで使用している正規表現パターンは、「Regular-Expressions.info」で紹介されているものです。 'Regexオブジェクトを作成 Dim r As New System.Text.RegularExpressions.Regex( _ "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b",

    正規表現を使って文字列を検索し、抽出する
  • どのUNIXコマンドでも使える正規表現 - Qiita

    特定コマンドの正規表現で使えるメタ文字が何だかわからない! 正規表現自体は知っているけど、それが今から使おうとしているコマンドで使えるものなのかわからずに困っている人も多いと思うのでまとめてみた。 たった3つの正規表現メタ文字セットだけ知ればいい コマンドによって、対応している正規表現メタ文字の範囲には違いがある。しかし、最低限知っておけばよいのは2種類+1サブセットの3つだけだ。 BRE(基正規表現)メタ文字セット ERE(拡張正規表現)メタ文字セット AWKのサブセット もちろん、これ以外にもGNU拡張正規表現メタ文字セットやPerl拡張正規表現メタ文字セット、JavaScript拡張正規表現メタ文字セットなどいくつかあるのだが、「どのUNIXでも(=POSIXで)使える」という特長を持たせたいのであれば、それらは覚えても意味がないので上記の3つさえおさえておけばよい。(例えPOSI

    どのUNIXコマンドでも使える正規表現 - Qiita
  • 正規表現を解析して可視化してくれるサイトが凄すぎる件

    ある正規表現に対して、特定の文字列がマッチするかどうかをチェックするツールやサイトは沢山ありますが、正規表現そのものが何を意味しているのか、どんな文字列を期待しているのかを解析・解読・説明してくれるツールやサイトってなかなか見ない気がします。 他人の書いた正規表現を見て、「ん?」ってなったことはありませんか? 例えばこれ。 1 ^[a-zA-Z0-9-_.]@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$ これくらいなら分かりますが、複雑になってくるとつらい… いつかはマスターしたいけど…今は楽したい。 そう思ってググってみると…ありました! それがこちら。 Regexper http://www.regexper.com/ 正規表現を入力して Display をクリックすると、その正規表現が表す内容を図にして表示してくれます。 例えば先程の正規表現は、当記事の一番上の

    正規表現を解析して可視化してくれるサイトが凄すぎる件
  • pythonの正規表現で日本語を扱う – taichino.com

    先日、正規表現が使えるようになってきたと書いたものの、今まで日語に対して正規表現を使うのは、どうせ上手く動かないだろうという様な先入観で使っていなかったのですが、調べてみるとただのわず嫌いだった事が解りました。 利用シーンは色々考えられると思うのですが、例えば日語文書中の単位付き数詞(100g、20個等)から数値と単位を両方抜き出すという処理を考えます。折角なので数値・単位共に半角全角文字がどちらも使われていて、正規表現が使いにくそうな状況を想定します。結論から言うとunicode文字列を使えばこのような状況でも上手く正規表現を使う事が出来ます。 使い方は簡単でパターンと検索対象の文字列をunicodeで用意し、searchやmatch等を呼ぶ際にunicodeフラグを指定すればOKです。unicodeフラグは省略形のre.Uも用意されています。先ほど想定した問題に対する正規表現を書

  • 1