タグ

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

  • 関連タグはありません

タグの絞り込みを解除

programmingとProgrammingとRegexpに関するAmaiSaetaのブックマーク (16)

  • 君たちは正規表現におけるインド数字の罠にハマったことはあるかい?(١٢٣٤٥٦٧٨٩) - Qiita

    import re re.match(r'\d{4}-\d{2}', '٢٠٢٢-٠٦') Pythonで書いてはいますが、内容を補足します。「'٢٠٢٢-٠٦'」という文字列が、数字4文字+ハイフン+数字2文字にマッチするかどうか、という正規表現を書いています。 一見するとどう見ても数字4桁ではないので、正規表現にマッチしないように見えますよね???? 実は正規表現にマッチします!!!というのが今回の記事の内容になります。 そもそも正規表現における数字の扱いとは 今回はPythonの正規表現のライブラリを利用しているので、公式のリファレンスを見てみましょう。 該当の部分には以下のような記述があります。 \d Unicode (str) パターンでは: 任意の Unicode 10 進数字 (Unicode 文字カテゴリ [Nd]) にマッチします。これは [0-9] とその他多数の数字を

    君たちは正規表現におけるインド数字の罠にハマったことはあるかい?(١٢٣٤٥٦٧٨٩) - Qiita
  • 正規表現の先読み・後読みを極める!

    柔軟性の高い正規表現を書こうとすると、避けて通れないのが先読み・後読みです。 先読み・後読みに関して、いままではとりあえず的な理解をしていたのですが、それだと説明できない正規表現に遭遇したので、説明できるまで理解を深めてみました。 とりあえず的な理解 正規表現を使って間もない人が先読み・後読みを理解するための説明です。 肯定的先読み (?=pattern) 次の正規表現では直後に def がある abc(def は含まない)に一致します。

    正規表現の先読み・後読みを極める!
  • 正規表現の脆弱性 (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) と呼ばれる脆弱性です。正確に理解するのが難しい脆弱性なので、少し解説してみたいと思います。 結論 長い記事になるので、最初に「とりあえずこれだけ知っ

  • Regular Expression Test Drive

    Regular Expression Test Drivefor Java Developer Java正規表現の動作確認ができるサイトです。正規表現をその場でテストできます

    AmaiSaeta
    AmaiSaeta 2021/05/21
    "Java正規表現の動作確認ができるサイトです。正規表現をその場でテストできます"
  • 正規表現に見切りをつけるとき

    Perl, Rubyなど手軽に使えるプログラミング言語に慣れてくると、あらゆるテキストデータの処理に正規表現(regular expression)を使ってしまいがちです。 けれど実は、正規表現の処理能力を超えるフォーマットというのが存在します。その典型的な例が、XMLやJSONのように、入れ子になったデータフォーマットです。

  • HTMLのpattern属性とJavaScript正規表現のunicodeオプション - Hatena Developer Blog

    こんにちは、Webアプリケーションエンジニアのid:nanto_viです。みなさんHTMLのフォーム検証機能は使っていますか? 近年は各Webブラウザの対応も進み、お手軽にフォームの利便性を高められるようになっています。 そんなフォーム検証機能のひとつがinput要素のpattern属性です。pattern属性の値にJavaScriptの正規表現パターンを指定することで、ユーザーの入力が意図しないものであった場合、フォーム送信ができなくなります。下図は5桁の数字の入力が求められるところに3桁しか入力せずフォーム送信しようとしたところです。ブラウザに組み込みのエラー表示が出現し、またそのメッセージにtitle属性の値が使われていることを確認できるでしょう。(pattern属性を指定する際には、title属性に書式の説明を記述することが推奨されています。) <input type="text"

    HTMLのpattern属性とJavaScript正規表現のunicodeオプション - Hatena Developer Blog
  • プログラミング言語における正規表現リテラルの必要性について

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

    AmaiSaeta
    AmaiSaeta 2013/12/19
    正規表現「リテラル」の話ならば、在った方が良い。学習コストも「(その言語の正規表現リテラル表記法)で正規表現リテラルになるよ」だけ。唯一の欠点は、将来の言語仕様改訂でそれを考慮する必要がある事ぐらい。
  • 文字列から正規表現を生成するときのメモ - IT戦記

    base2 のコードを見ていたら便利そうだったのでメモ http://code.google.com/p/base2/ 文字列から正規表現を作るとき RegExp("^hoge$"); // hoge とマッチ RegExp("^\\\\$"); // \ とマッチ RegExp("^\\[hoge\\]$"); // [hoge] とマッチ という感じで、バックスラッシュをいっぱい書かなければいけないので 以下のような関数を用意してやって function _r(str) { return (str + '').replace(/([\/()[\]{}|*+-.,^$?\\])/g, "\\$1"); } こんな感じで match(RegExp('^' + _r(prefix) + 'unko'), 'unko'); めもめも

    文字列から正規表現を生成するときのメモ - IT戦記
  • 本の虫: なぜC++0xの正規表現は、ECMAScript準拠なのか

    Boostの正規表現ライブラリで使われている正規表現の文法は、Perl 5を参考としている。一方、C++0xに入る、正規表現の標準ライブラリは、ECMAScript準拠(プラスちいさな拡張機能)である。 オプションで、POSIXのbasic、またはexntended、それに加えて、grepの拡張機能に準拠した文法を使うこともできるが、POSIX規格は、常にLeftmost Longest ruleであり、Non greedy repeatsができないので、grepのようなツールならともかく、プログラミング言語の中で使う正規表現としては、貧弱である。 しかし、TR1は、Boostを参考に作られたはずである。なぜ、違うのか。 Perlの正規表現は、Javascriptプログラマから見ると、少々羨ましい機能がある。特に、independent sub-expressions, zero widt

  • 電話番号、郵便番号にマッチする真の正規表現 : にぽたん研究所

    Shibuya.pm #16 「夏の正規表現祭り」で、正規表現のお話をさせていただきました。 まぁ、「電話番号にマッチする正規表現」とか「郵便番号にマッチする正規表現」とかよく書かれてるけど、「どれもこれも手緩いよね」って話。 あ、だいぶはしょったかな。 とりあえずスライドに書いたので、発表をご覧になってない方はスライドからご覧ください。 ふと見返すと、このブログで電話番号の正規表現を公表するのは 3 度目ですが、あれからだいぶ経ってますね。 今ではもっと厳密な正規表現を作っています。 そして、Number::Phone::JP に続き、Number::ZipCode::JP という酔狂なモジュールが公開された記念で、郵便番号にマッチする正規表現を今回初めて公開しますが、そもそもここまで厳密な正規表現が公開されること自体、邦初公開ってヤツでしょう。 Shibuya.pm でも言いましたが

    電話番号、郵便番号にマッチする真の正規表現 : にぽたん研究所
    AmaiSaeta
    AmaiSaeta 2011/07/07
    高度に精密さを追求した正規表現は、気狂いが適当にキーボードを叩いた結果と見分けが付かない | かるーく流し見ただけで解読を断念した。つかよく書けたねこんなのw
  • Boost.Regex(日本語訳)

    Boost.Regex(日語訳) Boost.Regex John Maddock Copyright © 1998-2007 John Maddock1 翻訳にあたって • 書は Boost.Regex ドキュメントの日語訳です。原文書のバージョンは翻訳時の最新である 1.45.0 です。2 • 原文の誤りは修正したうえで翻訳しました。 • 外部文書の表題等は英語のままにしてあります。 • 原文に含まれているローカルファイルへのハイパーリンクは削除しています。 • 文中の正規表現、部分式、書式化文字列は regular-expression のように記します。 • マッチ対象の入力テキストは“input-text”のように記します。 • ファイル名、ディレクトリ名は pathname のように記します。 • その他、読みやすくするためにいくつか書式の変更があります。 • 翻訳の誤り

    AmaiSaeta
    AmaiSaeta 2010/12/22
    "本書はBoost.Regexドキュメント( http://www.boost.org/doc/libs/1_39_0/libs/regex/index.html )の日本語訳です。原文書のバージョンは翻訳時の最新である 1.45.0です。"
  • Boost.Xpressive(日本語訳)

    Boost.Xpressive(日語訳) Boost.Xpressive Eric Niebler Copyright © 2007 Eric Niebler1 翻訳にあたって • 書は Boost.Xpressive ドキュメントの日語訳です。原文書のバージョンは翻訳時の最新である 1.45.0 です。2 • 原文の誤りは修正したうえで翻訳しました。 • 外部文書の表題等は英語のままにしてあります。 • 原文に含まれているローカルファイルへのハイパーリンクは削除しています。 • 文中の正規表現、部分式、書式化文字列は regular-expression のように記します。 • マッチ対象の入力テキストは“input-text”のように記します。 • ファイル名、ディレクトリ名は pathname のように記します。 • その他、読みやすくするためにいくつか書式の変更があります。

    AmaiSaeta
    AmaiSaeta 2010/12/22
    "本書はBoost.Xpressiveドキュメント( http://www.boost.org/doc/libs/1_45_0/libs/regex/index.html )の日本語訳です。原文書のバージョンは翻訳時の最新である 1.45.0です。"
  • 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ : 404 Blog Not Found

    2009年03月19日18:00 カテゴリLightweight Languages 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ ああ、まただよ... かなり使えるPHPの正規表現まとめ - IDEA*IDEA 〜 百式管理人のライフハックブログ 〜 正規表現って、プログラミング言語間の差が少ないサブ言語なのに、なぜ「PHP」がつくとダメ正規表現ばかり登場するのか。うんざりだ。 かなり使えるPHPの正規表現まとめ - IDEA*IDEA 〜 百式管理人のライフハックブログ 〜メールアドレスは厳密にチェックしようとするとなかなか難しいのですが、簡単なチェックだったらこれでOKぽいですね。 /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$

    「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ : 404 Blog Not Found
    AmaiSaeta
    AmaiSaeta 2009/03/20
    これは弾さんがひどい。わざわざ"簡単なチェック"て言ってる訳だから。確かに"+"弾くのは気になるけど、マイノリティだしなぁ。 | dankogaiのPHP嫌いは異常。大っ嫌いな人がPHPerだったりでもするんだろうか?
  • Perlメモ

    複数のプロセスでロック状態が異常であると判断し,そのうちの 1つがロックを解除したことにより,別のプロセスがロックしたにもか かわらず,先ほどロック状態が異常であると判断したプロセスによってこの正常なロッ クを解除されてしまう可能性があります. この方法の問題点は,異常なロック状態を解除する操作が正常なロック状態をも 解除できてしまうことにあります.逆に言えば,異常なロック状態を解除する操作に よって正常なロック状態を解除できなければ問題ないわけです.そのためにはどうす ればよいのか? 答えはロック状態が常に変化していけば よいということです.そして,これを実現するのに都合がよいのが rename による方法になります. 最初のスクリプトで説明しますと,ロックファイルが lockfile という 名前のときがロックが解除されている状態で,lockfile987654321 のよう に後ろに

    AmaiSaeta
    AmaiSaeta 2007/07/06
    めがちかちかするよ
  • 二度目の公開!電話番号の正規表現 : にぽたん研究所

    ※ 二度目の公開というタイトルにしましたが、三度目は予定していません。 2 年ぐらい前に、邦初公開!電話番号の正規表現というネタで、Regexp::Assemble という CPAN モジュールを紹介したことがありました。 あのモジュールを使うことによって、日で初めて、電話番号を正規表現で表わすという試みをしてみたのですが、該当エントリに書いた通り、 Number::Phone::JP の正規表現が今日現在でも正しいのかどうか等、未検証部分が異常に多いので、自己責任でお使いくださいw というものでした。 その後、Number::Phone::JP モジュール自体も、更新が面倒臭そうなものなせいか、全然更新されていなかったのですが、何やら今日更新版が出ている模様。 どうも作り直したっぽいかんじ。 で、早速ですが、最新版の正規表現テーブルを用いて、最新版の電話番号にマッチする正規表現を作っ

    二度目の公開!電話番号の正規表現 : にぽたん研究所
    AmaiSaeta
    AmaiSaeta 2007/07/06
    "27,986 バイト"←ちょ、おま | 読む気になれん
  • 正規表現とデリミタとエスケープ - 徒書

    思いこみ禁物 - Note @ Temporary-Depotで触れられていた、PerlPHPJavaScriptそれぞれにおける正規表現マッチの動作の違いが気になったので、自分でも確認してみました。 PHPPerlと同じ動作にならなかったのは、例えば $v = 'http://localhost/' だった時に、"/^$v/" で展開された正規表現パターンが /^http://localhost// となってしまうからだと思います。正規表現を囲うための文字(デリミタ)が、パターンの中にもそのまま現れているので、正規表現のパターンとして正しく読み取れなくなっているようです。 ※ 自分が確認に使った環境(PHP 4.3.6)では、"Warning: Unknown modifier '/' in ..." というメッセージが出ていました。 PHPのマニュアルによると、スラッシュ(/)以

  • 1