タグ

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

  • [正規表現] .*?は最短マッチではない - Qiita

    # Ruby 2.4.2 "<<<hoge>>>".match(/<.*?>/)[0] #=> "<<<hoge>" なぜこうなるのか .*?は、 最短マッチ 最左マッチ の2つの原則に従い、しかも最左マッチの原則の方が優先順位としては高いからである。 より嚙み砕いて言うと <.*?>は先頭の<がマッチした後に、そこからマッチする部分をできるだけ最小化しようと試みる。 <<<hoge>>>に対して<.*?>をパターンマッチさせる際に行われる実際の処理の流れは、次のようなイメージになるだろう。 < # <までマッチ << # <>のマッチに失敗、.の数を増やしてリトライ << # <.までマッチ <<< # <.>のマッチに失敗、.の数を増やしてリトライ <<< # <..までマッチ <<<h # <..>のマッチに失敗、.の数を増やしてリトライ <<<h # <...までマッチ <<<ho

    [正規表現] .*?は最短マッチではない - Qiita
  • regex101: build, test, and debug regex

    Please remember this entry will be public in the community library. This is not your personal regex library! To save, access and manage your personal entries, please go to the account page instead.

    regex101: build, test, and debug regex
  • Rubular: a Ruby regular expression editor and tester

    Rubular is a Ruby-based regular expression editor. It's a handy way to test regular expressions as you write them. To start, enter a regular expression and a test string. Or you can try an example.

    Rubular: a Ruby regular expression editor and tester
  • はじめての正規表現とベストプラクティス#7: Unicode文字ポイントとUnicode文字クラスのプロパティ|TechRacho by BPS株式会社

    2019.02.20 はじめての正規表現とベストプラクティス#7: Unicode文字ポイントとUnicode文字クラスのプロパティ #1: 基となる8つの正規表現 #2: 正規表現とは何か/ワイルドカードとの違い #3: 冒頭/末尾にマッチするメタ文字とセキュリティ、文字セットの否定と範囲 #4: 先読みと後読みを極める #5(特別編)|と部分マッチのワナ #6: 文字セットのショートハンド #7: Unicode文字ポイントとUnicode文字クラス(記事) #8: 対象の構造を意識した「適度にDRYな」書き方 #9: .*や.+がバックトラックで不利な理由 10: 危険な「Catastrophic Backtracking」前編 主にRubyを中心としながらも、なるべく一般的な形で正規表現を解説しています。誤りやお気づきの点がありましたら@hachi8833までどうぞ🙇。 ⚓U

    はじめての正規表現とベストプラクティス#7: Unicode文字ポイントとUnicode文字クラスのプロパティ|TechRacho by BPS株式会社
  • 正規表現の先読み・後読みを極める! - あらびき日記

    この記事は abicky.net の 正規表現の先読み・後読みを極める! に移行しました

    正規表現の先読み・後読みを極める! - あらびき日記
  • 正規表現の先読みと後読みはどっちがどっちだかわかりにくいんだよ!(追記あり) - chalcedony_htnの日記

    といつも思うので、自分用にメモすることで覚えようという魂胆です。 以下はInDesign CS4の正規表現について記述します(たしかCS3から使えたような気がする)。 結論から 名前 英語で 位置 演算子 後読み lookbehind マッチパターンより前の部分 (?<=) 肯定 (?<!) 否定 先読み lookahead マッチパターンより後の部分 (?=) 肯定 (?!) 否定 肯定の場合はパターンの前が「=」、否定の場合は「!」。 英語を見ると「後読み」「先読み」の訳語も納得できそうな気はするのですが、やっぱりわかりにくいです。背後と前方……とか言うとまた混ざるし! 「つぎの電車」と「こんどの電車」はどっちが早く発車するかみたいな感じに似ていますな。 別に演算子さえ覚えてしまえば名前は意識しなくてもよさそうなのですが、せっかくInDesignには正規表現の記述支援機能がついてるので

    正規表現の先読みと後読みはどっちがどっちだかわかりにくいんだよ!(追記あり) - chalcedony_htnの日記
    shifumin
    shifumin 2018/12/28
    (肯定|否定)(先読み|戻り読み)、図が分かりやすい。
  • 正規表現で全角スペースにマッチさせる方法 - Qiita

    全角スペースを正規表現でマッチさせたいけど、\s だとマッチしない。これは \s や \d といった正規表現の文字クラスの略記法が ASCII の範囲の文字のみを対象 としているからなんです。 ひどいよ… こんなのってないよ… じゃあ、半角スペースと全角スペースの両方にうまくマッチさせるにはどうしたらいいのでしょう。 それでは、「苗字と名前が半角もしくは全角のスペースで区切られた日人の氏名の文字列から 正規表現を使って苗字と名前をそれぞれ取り出す」という例をもとに考えてみましょう。 方法1: 文字クラス内で全角スペースを指定する 文字クラス (角括弧) の中に \s と " " (全角スペース) を並べて指定します。でも正規表現に直接全角スペースを入力するのはなんだか嫌ですね。 方法2: Unicode プロパティの blank を利用する Unicode プロパティ といふものありけり

    正規表現で全角スペースにマッチさせる方法 - Qiita
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

  • Regexper

    Regular expression visualizer using railroad diagrams

    shifumin
    shifumin 2016/01/20
    可視化便利。
  • 正規表現 (Ruby 2.5.0)

    [edit] メタ文字列とリテラル、メタ文字とエスケープ 式展開 文字 任意の1文字 文字クラス 特別な文字列に対するマッチ 繰り返し キャプチャ グループ 部分式呼び出し(subexpression call) 選択 アンカー 条件分岐 オプション エンコーディング コメント フリーフォーマットモード 非包含オペレータ (absence operator) (実験的) 一覧 特殊変数 参考文献 正規表現(regular expression)は文字列のパターンを記述するための言語です。また、この言語で記述されたパターンも正規表現と呼びます。 正規表現を用いると、文字列が指定したパターンを含んでいるかどうかを判定し、また含んでいるならばそれが文字列中のどの場所であるかを知ることができます。 /pat/ %r{pat} などの正規表現リテラルや Regexp.new などで正規表現オブジェク

  • 正規表現の機能の覚書き

    はじめに「はじめての正規表現」がホッテントリ入りしていますが、 導入としては、何に使うのかがわかりやすくて良いのではないかと思います。 あれを見て、基機能をまとめてみたくなったので、正規表現の基的な機能について書いてみます。 (正規表現が初めてという人は「はじめての正規表現」を先に見たほうがいいと思います。) 例では「検索」か「置換」をするものとして話を進めていきます。 (「はじめての正規表現」が実例を中心にしたのに対して、こちらは機能を中心に書きます) 正規表現は、プログラミング言語やその他のツールなど、それぞれで微妙な違い(方言)があるので、その点には注意が必要です。 (表記法が違ったり、ここに紹介する機能がサポートされていなかったり、逆に紹介していない機能をサポートしていたりする場合があります) メタ文字とリテラル文字正規表現には、メタ文字とリテラル文字というものがあります。 メ

    正規表現の機能の覚書き
  • この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記 (はてなBlog)

    正規表現と構文図について解説します。オートマトンについても詳しく述べます。オートマトン・スゴロクで遊びましょう! 世間でよく知られている/使われている概念・方法にはこだわらず、僕(檜山)の感覚で一番わかりやすいと思われる筋書きと用語法/図式法を使って説明します。この記事に目を通して“感じ”が掴めたら、形式言語理論の教科書を読み始めることが出来るでしょう。 [追記]この記事の内容に対する具体例は、「正規表現とオートマトン:なんだ簡単じゃん、JavaScriptによる実装」にあります。[/追記] 内容: 正規表現 正規表現の例 構文図 基記号 連接 選択 省略可能 繰り返し ストレートワイヤーによるレイアウト調整 有限状態オートマトン 有限状態オートマトンの実行 バックトラックと先読み スゴロクとオートマトン コマをたくさん使うスゴロクと並列処理 非決定性オートマトンと決定性オートマトン 正

    この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • http://www.rider-n.sakura.ne.jp/regexp/regexp.php

  • 正規表現をいまのうちに覚えておきたい人のためのリソース集

    HTML5で正規表現がサポートされる、といったことをきっかけに、正規表現はプログラマだけでなくWebクリエイター全体のスキルとして求められていくものになっていくのではないでしょうか(参考:あまり知られていないけれど、HTML5では正規表現が使えるようになる )。 ここではそうした正規表現の初学者や、一度挫折したけど再入門したい人、そしてより高度な内容をマスターしたいすべての人のためのリソース集を作りました。 初学者向けには「はじめての正規表現」 「はじめての正規表現」は、文字通り正規表現という言葉は知っていても中味はよく分からない、という初学者の方にぴったりのコンテンツ。紙芝居形式のプレゼンテーションで楽しく正規表現について把握できます。 はじめての正規表現 初学者の方には、次の2つの記事も手っ取り早く読めて概要を把握できますので紹介しておきます。 使うほどに良さが分かる正規表現(1/2)

    正規表現をいまのうちに覚えておきたい人のためのリソース集
  • 投資対効果の極めて高い、プログラムなんて分からない人のための「単純作業自動化」入門 - R&D: りょうえんダイアリー

    あるいは、正規表現+置換による、プログラミングができなくても単純なテキスト編集作業を強力に自動化する方法 このTipsの概要 このTipsでは「テキストを、強力に自動的に操作する方法」が得られます。 自動化といっても、プログラミング言語に習熟するのは大変です。 そこで、プログラミングほど、習熟や利用に負荷が掛からず、かつ応用範囲が広い「正規表現」と言われる書式と、テキストエディタなどに付属の「置換」機能を組み合わせたものを解説します。 具体的にできるようになること たとえば「ネットから文章をテキストエディタにコピー&ペーストしたが、変な改行がたくさん入っているので、改行を手動で消す作業をたくさんしないと。」 とか 「ごはん、ご飯、御飯、ゴハン」と、いろんな書き方で書かれている「ごはん」を、全部「ご飯」という表記に統一したい とか 「Skypeからコピペしたら、発言者名がいっぱいついて、消す

    投資対効果の極めて高い、プログラムなんて分からない人のための「単純作業自動化」入門 - R&D: りょうえんダイアリー
  • 1