タグ

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

  • NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表

    印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます NTTと早稲田大学は6月16日、誤った正規表現の文字列抽出を検出して自動的に修正する技術を世界で初めて実現したと発表した。同17~22日に開催される「PLDI2023」で詳細を報告するという。 今回開発した技術は、多様なバリエーションを扱うことからあいまいさのない正確な記述が求められる正規表現の文字列抽出において、誤った記述を検出し自動的に修正する。NTTは、正規表現によるパターンの確認を実施するプログラムの振る舞いとして、「ECMAScript 2023」に完全準拠した正規表現エンジンの振る舞いを理論モデルとして厳密に定義し、この理論モデルに従って修正結果となる正規表現に誤りがないことを保証する条件を生成する方法を提案した。 さらに、

    NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表
  • 正規表現入門決定版 - Qiita

    1. はじめに この記事はNuco Advent Calendar 2022の12日目の記事です。 1-1. 対象者 この記事は ・正規表現に触れたことがあるけど、結局なんだったのかわかっていない ・正規表現の考え方にイマイチ慣れない ・正規表現って美味しいんですか? というような正規表現初心者の方に向けて書いています。 1-2. この記事を読むメリット 大きなメリットとしては「正規表現の考え方」を身につけることができるはずです。 また記事の最後では正規表現のサンプル集、参考記事および練習サイトを紹介しています。 足りない知識をカバーし実際に手を動かすことで身についていくので、この記事と合わせて参考記事を読んだり練習問題にチャレンジしてみてください。 2. 導入知識 2-1. 正規表現のメリット 具体的な話に入る前に、正規表現を使えばどのようなことができるのか紹介します。 正規表現を用いれ

    正規表現入門決定版 - Qiita
  • 正規表現の脆弱性 (ReDoS) を JavaScript で学ぶ

    先日、このようなツイートを書いたところ、かなりの反響がありました。 JavaScript の正規表現の脆弱性の例でいうと、例えば /\s+$/ は脆弱性があると言える console.time(); /\s+$/.test(" ".repeat(65536) + "a"); console.timeEnd(); 結構時間がかかるのがわかる。でも /\s+$/ を見て「これは危険だな」と理解出来る人はそんなにいない。JavaScript に限らないけれど。 — Takuo Kihira (@tkihira) February 17, 2022 これは一般に ReDoS (Regular expression Denial of Service) と呼ばれる脆弱性です。正確に理解するのが難しい脆弱性なので、少し解説してみたいと思います。 結論 長い記事になるので、最初に「とりあえずこれだけ知っ

  • 正規表現でPHPを脆弱にする (1) 「^ と $」 - Qiita

    みなさん正規表現は好きですか? 私は好きです。簡単に脆弱性を作り込めて、とても便利ですからね。 この記事ではPCRE関数(preg_match(), preg_replace()など)を利用して、みなさまにPHP正規表現のバッドノウハウを教示いたします。 先に結論を書きます 単独の文字列のマッチに $ を用いるのは予期しないパターンになるのでやめましょう。^は特に危険ではありませんが、^と$の組み合せではなく\Aと\zの組み合せを覚えましょう。ただし、m修飾子で複数行(マルチラインモード)で、行頭と行末にマッチさせたい場合を除きます。 文字列のマッチに ^ と $ のペアを利用する そうですね、例としてQiitaのようなユーザー登録サイトの表示名 @tadsan のような文字列を登録する前の検査をするとします。 要件としては、使用可能な文字は abcdefghijklmnopqrstuvw

    正規表現でPHPを脆弱にする (1) 「^ と $」 - Qiita
  • 正規表現の変形で作る独自記法WiKi Parser - 橋本商会

    .replace(/\(\((?!\?)/g, function (leftParenthesis) {

    正規表現の変形で作る独自記法WiKi Parser - 橋本商会
  • 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
  • Twitterの日本語ハッシュタグ抽出する正規表現 · Real Beat

    正式に日語ハッシュタグが使えるようになったので、色々ためした結果、以下の正規表現でほぼ公式と同じ動作になった。「ほぼ」なのはちゃんとテストしたわけじゃないので。使うなら自己責任でどうぞ。 sourcecode language=“text”([a-zA-Z0-9_\u3041-\u3094\u3099-\u309C\u30A1-\u30FA\u3400-\uD7FF\uFF10-\uFF19\uFF20-\uFF3A\uFF41-\uFF5A\uFF66-\uFF9E]+) ``` iPhoneの公式クライアントだとなんか動きが違ったりするし、half-widthのカタカナ半濁点はだめだったりとかなんかバグなのか仕様なのかよくわからず。半濁点も通すようにしたければ、FF9EをFF9Fにすればおk。 Tweet

  • 正規表現を解析して可視化してくれるサイトが凄すぎる件

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

    正規表現を解析して可視化してくれるサイトが凄すぎる件
  • 正規表現入門 星の高さを求めて

    第13回日情報オリンピック(JOI2013/2014)春季トレーニング合宿での講義資料です. http://www.ioi-jp.org/camp/2014/2014-sp_camp-rules.html 【概要】 正規表現とはパターンマッチングのための記法であり,文字列検索の便利な道具として広く親しまれています.この講義では,正規表現の基礎から始め,「星の高さ」という性質に注目して正規表現の裏側に潜む数理構造に迫っていきます.1960年代から未解決である「星の高さ問題」に浪漫を感じてもらえると幸いです.

    正規表現入門 星の高さを求めて
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

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

  • プログラミング言語における正規表現リテラルの必要性について

    Twitterに書いたことのまとめです。 プログラミング言語の仕様の一部として正規表現リテラルを提供することの得失について、JavaScriptを例に説明します。 ■より簡潔なコード 言うまでもありませんが、正規表現リテラルを使った方が簡潔なコードになります。 (new RegExp("abc")).exec(s) // リテラルを使わない場合 /abc/.exec(s) // リテラルを使った場合 また、正規表現リテラルがない場合は、文字列リテラルとしてのエスケープと正規表現としてのエスケープが二重に必要になる結果、コードの保守性が低下します注1。 new RegExp("\\\\n"); // リテラルを使わない場合 /\\n/ // リテラルを使った場合 ■エラー検出タイミング 正規表現リテラルがない場合、実際にその正規表現が評価されるまで記述エラーを検出することができません。正規表

  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回

    こんにちは、久保田です。 皆さん正規表現は使っていますか? PHPに限らずどんな言語を使っていても、正規表現にお世話になっていないプログラマはいないと思います。しかし、その正規表現がどのように実装されているかについては知らない方が多いのではないのでしょうか。 この記事では、その正規表現エンジンの実装方法の一つである仮想マシンによる正規表現エンジンの実装方法を解説しつつ実際に簡単な正規表現エンジンを作っていきたいと思います。 正規表現エンジンの実装方法 正規表現エンジンの実装方法はいくつかあるのですが、それの一つに仮想マシンによって正規表現のマッチング処理を実行するやり方があります。PHPで利用している正規表現エンジンであるPCREはこの方式を採用しています。 仮想マシンによる実装方法は、正規表現というよりもプログラミング言語の実装方法の一つとして知られています。Rubyの最もメジャーな実装

  • 正規表現と文字列がマッチしているか簡単にチェックできるオンラインツール -RegExp playground

    正規表現と文字列を入力し、それがマッチしているかどうか簡単にチェックできるオンラインツールを紹介します。 NGの画面 正規表現のチートシート ページ下部にあるチートシートから。 . 任意の文字にマッチする(改行を除く) {n} n回の繰り返し {n,} n回以上の繰り返し {n, m} n回以上m回以下の繰り返し ? {0,1}と同じ * {0,}と同じ + {1,}と同じ \w アルファベット、数字またはアンダーバー、[a-zA-Z0-9_]と同じ \d 数字、[0-9]と同じ \s 空白文字、[\t\r\n ]と同じ […] キャラクタをクラス化 [^...} キャラクタを否定クラス化 (…) パターンのグループ化 (?:…) パターンの非格納グループ化 (?=…) 先読み (?!…) 否定先読み ^ 行の先頭にマッチする $ 行の終端にマッチする \b 単語境界にマッチ \B 単語境

  • PHP の正規表現があまりに複雑なのでまとめてみた - A Day in Serenity @ kenjis

    できるだけ正確な記述を目指していますが、誤りがありましたら、お知らせ願います。 (最終更新: 2013/3/29 11:22) 正規表現の種類 まず、PHP には以下の 3種類の正規表現があります。 Perl 互換の正規表現 (pcre) mbstring の正規表現 (mbregex) POSIX 拡張正規表現 (regex) このうち、regex は バイナリセーフでない 日語は扱えない PHP 5.3 で非推奨 なので使わない方がいいでしょう。見つけたら、随時 pcre か mbregex で書き直しましょう。 Perl 互換の正規表現 (pcre) 正規表現エンジンは Perl の「PCRE」 日語は UTF-8 のみ扱える UTF-8 を使う場合は、パターン修飾子に u を指定する 文字クラスはロケールの影響を受ける PHP: 文字クラス - Manual 処理の制限値 (p

    PHP の正規表現があまりに複雑なのでまとめてみた - A Day in Serenity @ kenjis
  • Regexper

    Regular expression visualizer using railroad diagrams

  • ブラウザで正規表現のチェックなどができるサイトまとめ | IDEA*IDEA

    ドットインストール代表のライフハックブログ

    ブラウザで正規表現のチェックなどができるサイトまとめ | IDEA*IDEA
  • 制作会社で働く人向け「はじめての正規表現」 - あと味

    制作会社で働いてると、ディレクターやライターであればライティング作業をすることがあるし、マークアップエンジニアであればHTMLCSSを処理するし、プログラマーであればコードを書きます。 制作会社に勤めていれば全員何らかの形で、文字列を扱うことになります。 そんな時に正規表現という超強力な文字列処理のテクニックを身につければ、今以上に作業がはかどるし、いろんな問題が解決するのかなーと思い、先週1時間弱の勉強会を開催しました。 プログラマーは普段から使ってるんですけど、なかなか他の部門の人に紹介する機会がないのが現状だったので、多少なり役立ったんじゃないかと思ってます。 せっかくなので、その勉強会で使ったスライドを動画にしてニコニコ動画にアップしたので、ご紹介します。*1 ついでにウェブページ形式にもしてみました。 はじめての正規表現 って中の人が言ってました。 追記: Twitterのフォ

    制作会社で働く人向け「はじめての正規表現」 - あと味
  • 正規表現の問題集1(基本編)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    正規表現の問題集1(基本編)
  • 1