Movatterモバイル変換


[0]ホーム

URL:


はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

タグ

関連タグで絞り込む (12)

タグの絞り込みを解除

regexに関するmas-higaのブックマーク (22)

  • 君はメールアドレスの正規表現を適当にググって使っていないか?

    /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ だ。いいね? なぜこの正規表現がいいのか ちなみにこれの何がいいかというと 「HTMLの標準仕様を定めるWHATWGの正規表現をそのまま使っている」ところ。 つまり、各ブラウザのデフォルトの<input type="email" />のバリデーションと一致するという大きなメリットを得られる。 これはMDNにも載っている列記とした「実用的な」正規表現だ。 ちなみにRFCオタクがRFC準拠のおおよそ実用に耐えないであろうメールアドレスの正規表現を推してくるかもしれないが無視して良い。 例えば、RFCに準拠している以下のようなメ

    君はメールアドレスの正規表現を適当にググって使っていないか?
    mas-higa
    mas-higa2025/02/27非公開
    UUCP時代(?)に % を使ってアドレス解決できないマシンにメール送る方法あった気がするんだけど思い出せない
    • 正規表現が"$"と"^"をラインアンカーとして採用した理由 | ソフトアンテナ

      「正規表現」はさまざまなプログラミング言語やアプリケーションから利用できますが、正規表現で使われている「記号」がどのように選ばれたのか不思議に思っている方もいるかもしれません。 今回、正規表現の"$"と"^"が行末・行頭を示すラインアンカーとして選ばれた理由を推測するブログ記事、「Why do regexes use `$` and `^` asline anchors?」が公開され注目を集めています(Reddit)。 記事を作成したコンサルタントのHillel Wayne氏によると、正規表現が最初に登場したのはKen Thompson氏が移植したQEDテキストエディタだとのことです。移植版のQEDエディタのマニュアルには以下のような情報が掲載されています。 b) "^" is a regular expression which matches character at the beg

      正規表現が"$"と"^"をラインアンカーとして採用した理由 | ソフトアンテナ
      mas-higa
      mas-higa2024/04/01非公開
      \A \z とかあるけど意味が違うし、可読性が上がるわけでもないしねぇ
      • アイヌ語仮名「ㇷ゚」に対する正規表現の罠

        導入 アイヌ語は日語と異なり、閉音節(子音で終わる音節)も存在するので、表記の際音素文字であるラテン文字なら、そのまま p, t, k, m, n, s, r などの子音文字を後ろの付ければ良いわけなので、アイヌ語ローマ字表記では、何も問題が生じない。しかし、元々開音節言語である日語に特化したカタカナのような仮名文字で表記する際、鼻音 n は「ン」でなんとかなる(実はそれでもまずい事になっているけどここでは割愛する)が、p, t, k, m, n, s, r, h はどうしようもないので、特殊の捨て仮名(小書き仮名文字)を利用することになっている。 具体的には以下のような特殊仮名文字(通称 アイヌ語仮名)である。 ㇷ゚ -p ッ -t ㇰ -k ㇺ -m ㇱ -s ㇻ -(a)r, ㇼ -(i)r, ㇽ -(u)r, ㇾ -(e)r, ㇿ -(o)r お分かり頂けただろうか… 問題 r

        アイヌ語仮名「ㇷ゚」に対する正規表現の罠
        mas-higa
        mas-higa2023/09/01非公開
        結合文字は 1文字という理解で正しければ、正規表現で 1文字を正しく扱えていないという話かな? 昔マルチバイト文字に対応してないプログラムが Shift JIS や EUC の文字の途中で分割して文字化けしたりしてたのと似てる
        • 正規表現とは何なのか、makenowjustが正規表現に興味を持ったきっかけ。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.1 - STORES Product Blog

          2023年6月15日に『深掘りRubyKaigi2023 with spikeolaf & makenowjust』を開催しました。イベントの内容をほぼ全文文字起こし形式でお届けします。この記事は第1部です。 hey.connpass.com イベントのアーカイブはYouTubeでも公開しています。 www.youtube.com 登場人物 ゲスト makenowjust/藤浪 大弥さん spikeolaf/金子 雄一郎さん STORES fujimura/藤村 大介 shyouhei/卜部 昌平 hogelog/小室 直 正規表現に興味を持ったきっかけ fujimura:最初は藤浪さん、makenowjustさんに正規表現の発表について伺おうと思います。まずは改めてRubyKaigi2023でどんなことを発表したかを紹介いただけないでしょうか? makenowjust:Rubyの正規

          正規表現とは何なのか、makenowjustが正規表現に興味を持ったきっかけ。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.1 - STORES Product Blog
          mas-higa
          mas-higa2023/07/26非公開
          Hyperscanの話をしてるとこ、めちゃ早口だったんじゃないかと想像してる。
          • RubyKaigi 2023での発表の「2進数の足し算を計算する正規表現」の解説

            RubyKaigi2023で「Make Regexp#match much faster」という発表をします、@makenowjust です。この発表では、ReDoS対策のためにRuby 3.2で導入された、正規表現マッチング (Regexp#match) の メモ化による最適化 について解説します。 さて、発表の中に次のようなスライドがあります。 このスライドはRubyの正規表現がいかに強力かを説明するためのもので、例として「2進数の足し算を計算する正規表現」を示しています。 また、このツイートで使っている正規表現も、実はこの正規表現です。 今回の記事では、この「2進数の足し算を計算する正規表現」の解説をしていきたいと思います。 「2進数の足し算を計算する正規表現」 コピペがしやすいように、スライドの画像ではなくテキストのコードで上の正規表現を出しておきます。 RE = /(?<s>[

            RubyKaigi 2023での発表の「2進数の足し算を計算する正規表現」の解説
            mas-higa
            mas-higa2023/05/11非公開
            "left, right, answer の長さが等しい" 繰り上がりができないんじゃなく、answer の桁数に合わせて left, right に前0を埋めればええんやね。
            • シンプル図解: 正規表現の (?= ) とか (?! ) とか (?<= ) とか (?<! ) とか - Qiita

              Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

              シンプル図解: 正規表現の (?= ) とか (?! ) とか (?<= ) とか (?<! ) とか - Qiita
              • キャッシュによるRubyの正規表現のマッチングの高速化の紹介 - クックパッド開発者ブログ

                9月からRuby開発チームにインターンシップとして参加している@makenowjustです。 総合研究大学院大学の学生で、普段は情報セキュリティに関する研究をしています。 インターンシップでは、キャッシュ (メモ化) を利用したRubyの正規表現の高速化を行いました。 ReDoSと呼ばれる、バックトラックが爆発することでマッチング時間が膨大になる脆弱性があります (ReDoSについては、拙作ですがWEB+DB PRESSに掲載された記事があります)。 近年、ReDoSは多く報告されており、Rubyもその例外ではありません (参考1、参考2)。 今回実装した最適化は、ReDoSを防ぐことを目的としたもので、多くの正規表現のマッチング時間が文字列の長さに対して線形となります。 ReDoSが起こる正規表現の例として、/^(a|a)*$/が挙げられます。 今回の修正の前後での実行時間を比較すると、

                キャッシュによるRubyの正規表現のマッチングの高速化の紹介 - クックパッド開発者ブログ
                • 正規表現の先読み・後読み

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

                  正規表現の先読み・後読み
                  mas-higa
                  mas-higa2022/08/23非公開
                  "どちらが「先」でどちらが「後」か、少し混乱します" ほんまこれ。文字列の先頭から見て行って、現在位置より先を見るのが先読み、既に通り越した後ろを見るのが後読み。後に~が続くとか意識しちゃうと意味が逆に
                  • 3の倍数を正規表現で - 37.50.48

                    leading zero を許容しない十進非負整数は、 /^(0|[1-9][0-9]*)$/ と表現できる。これは、 /^(0|([1-9]0*)+)$/ と表現することもできる。 以下では、「数」は「 leading zero を許容しない十進非負整数」と同じ意味で扱う。 「 x が 3 の倍数である」と「 x の各桁の数字の和が 3 の倍数である」が同値であることは知られている。 ということは、「 3 の倍数の後ろに 3 の倍数の繋げたもの」も 3 の倍数である。 ということは、3 の倍数全体の集合を正規表現で表現できるはずである。 できた。 /^(0|(([147][0369]*([147][0369]*[258][0369]*)*([147][0369]*[147]|[258])|[258][0369]*([258][0369]*[147][0369]*)*([147]|[258

                    3の倍数を正規表現で - 37.50.48
                    mas-higa
                    mas-higa2022/02/25非公開
                    "少し変形しておく" ? "3 の倍数であるが上記に該当しないものについて考える" ?? "ここに 4, 5, 6, 7, 8, 9 を加えると" ??????
                    • 40行以内で正規表現エンジンを構築 | POSTD

                      最終目標は、最小限のコードで正規表現ユースケースの大部分をカバーできるくらい十分堅牢な構文を提供することです。 1文字と一致させる まずはじめに、1文字のパターンと1文字で構成される文字列を引数に取り、一致するかしないかを示すブール値を返す関数を作成してみます。1文字のパターンである . はワイルドカードとされ、任意の文字リテラルと一致します。 下記のようなかんじです matchOne('a', 'a') -> true matchOne('.', 'z') -> true matchOne('', 'h') -> true matchOne('a', 'b') -> false matchOne('p', '') -> false function matchOne(pattern,text) { if (!pattern) return true // 任意テキストが空パターンと一致

                      40行以内で正規表現エンジンを構築 | POSTD
                      • Email Address Regular Expression That 99.99% Works.

                        Just copy and paste theemail regex below for the language of your choice. Feeling hardcore (or crazy, you decide)? Read the official RFC 5322, or you can check out thisEmail Validation Summary.Note there is no perfectemail regex, hence the 99.99%. GeneralEmail Regex (RFC 5322 Official Standard) (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\

                        • 正規表現:最短一致でマッチさせる表現 | WWWクリエイターズ

                          Vimのmagicを利用した正規表現は、記述方法が異なりますので、ご注意下さい。こちら「 正規表現:特殊文字(メタ文字)の一覧 」をご覧ください。 最短マッチを見つける正規表現 さて、具体例を見ていきましょう。例えば、から<a></a>で囲まれたアンカータグを「1つだけ」取り出す事を考えます <nav> <a href="/about">About</a> | <a href="/access">Access</a> | <a href="/contact">Contact</a> </nav> 改行以外のすべての文字を表す「.」を利用して、「<a . *</a>」と言った正規表現が思いつきます。ですが、これだと「最長一致」を探してしまい、上記の例だと、3つのアンカータグをひと続きでマッチしてしまいます。 // アンカータグを検出?(デリミタに#を利用) #<a.*>(.*)</a>#

                          mas-higa
                          mas-higa2017/06/08非公開
                          まとめって3つだけ? (vim で php のコード書いてる人だってことだけはわかった)
                          • [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita

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

                            [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
                            mas-higa
                            mas-higa2017/06/05非公開
                            [あとで読まない]どこが当っててどこが間違ってるのか考えながら読むの苦痛
                            • Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック|TechRacho by BPS株式会社

                              2017.03.23Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック こんにちは、hachi8833です。Ruby 2.4.1リリースおめでとうございます。 多くの修正・変更点の中から、私にとって関心の高い非包含演算子を取り急ぎチェックしてみました。結構奥が深そうなので、何かわかったら別途記事にするかもしれません。 「特定の文字列を含まない文字列にマッチする」なんて夢のようじゃありませんか。 参考情報 公式ニュース:Ruby 2.4.1 Released 2.4.0以降のコミット: Comparing changes 公式のコミットはmergeばかり並んでいて読みづらいので、RubyFlowの速報も参照しました。Ruby 2.4.1 Onigmoアップデートで非包含演算子が導入Rubyの正規表現エンジンとしておなじみのOnigmoRubyとは独

                              Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック|TechRacho by BPS株式会社
                              • PerlのRegexp::TrieをRubyに移植した - Islands in the byte stream

                                GitHub - gfx/ruby-regexp_trie: Optimized Regexpbuilder with Trie (aRuby port ofPerl's Regexp::Trie) # Gemfile gem 'regexp_trie' これははてなキーワードやWikipediaのリンクのように、ある程度の量のテキストに対して大量のキーワードをマッチさせるときに、最適化した正規表現を生成するライブラリです。はてなキーワード*1をとあるブログエントリ*2にマッチさせるための簡単なベンチマークもあります。 example/benchmark.rb 結果: $bundle exec example/benchmark.rb (snip) user system total real Regexpraw 4.270000 0.030000 4.300000 ( 4.3

                                PerlのRegexp::TrieをRubyに移植した - Islands in the byte stream
                                mas-higa
                                mas-higa2016/01/25非公開
                                Regexp の何がイヤって、いつも最後の p を忘れるのがイヤ。/ regex を rx って省略するのか。Emacs なら re なんだが。(どうでもいい)
                                • 遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ

                                  こんにちは、ミドルウェア開発チームの青木です。 先日、アプリケーションサーバーが応答を返さなくなるトラブルに遭遇しました。 今回はその時のトラブルの原因と対策の顛末についてお話しようと思います。 現象 アプリケーションサーバーが突如応答を返さなくなりました。 現象が発生したアプリケーションサーバーのスタックトレースを見ると、あるスレッドの先頭が上記のようになっていました。 "qtp258153142-514386" prio=10 tid=0x00007f40b8dbf000 nid=0x7b4e runnable [0x00007f415ccb0000]java.lang.Thread.State: RUNNABLE atjava.util.regex.Pattern$Loop.match(Pattern.java:4692) atjava.util.regex.Pattern$G

                                  遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ
                                  mas-higa
                                  mas-higa2015/05/13非公開
                                  本の宣伝だった!!
                                  • 第60回 Ruby/Rails勉強会@関西で正規表現の先読みについてという発表をしました - @znz blog

                                    第50回Ruby/Rails勉強会@関西 に参加して、「正規表現の先読みについて」という発表をしてきました。 発表資料 https://github.com/znz/regexp-201403 http://slide.rabbit-shocker.org/authors/znz/regexp-201403/ https://speakerdeck.com/znz/zheng-gui-biao-xian-falsexian-du-minituite http://www.slideshare.net/znzjp/regexp-201403 デモアプリ デモに使った Web アプリのソースは https://gist.github.com/znz/9835956#file-regexp-201403-rb で公開しています。heroku にも deploy したので、 デモサイト (20

                                    • 鬼車 正規表現

                                      サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

                                      • 数字を3桁ずつ区切る - 橋本詳解

                                        通貨みたいな表示 1234567890.to_s.reverse.split(/(\d{3})/).select{|i|i.size>0}.join(',').reverse => "1,234,567,890"1234567890.to_s.reverse.gsub(/(\d{3})/,'\1,').reverse => "1,234,567,890"

                                        数字を3桁ずつ区切る - 橋本詳解
                                        • 正規表現の限界 @ Shibuya.pm

                                          swatmac.info Buy thisdomain. 2020 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor thedomain owner maintain any relationship with the advertisers. In case of trademark issues please contact thedomain owner directly (contact information can be found in whois).Privacy Policy

                                          mas-higa
                                          mas-higa2011/07/08非公開
                                          なぜ否定の正規表現は難しいか。

                                          お知らせ

                                          公式Twitter

                                          • @HatenaBookmark

                                            リリース、障害情報などのサービスのお知らせ

                                          • @hatebu

                                            最新の人気エントリーの配信

                                          処理を実行中です

                                          キーボードショートカット一覧

                                          j次のブックマーク

                                          k前のブックマーク

                                          lあとで読む

                                          eコメント一覧を開く

                                          oページを開く

                                          はてなブックマーク

                                          公式Twitter

                                          はてなのサービス

                                          • App Storeからダウンロード
                                          • Google Playで手に入れよう
                                          Copyright © 2005-2025Hatena. All Rights Reserved.
                                          設定を変更しましたx

                                          [8]ページ先頭

                                          ©2009-2025 Movatter.jp