並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 208件

新着順 人気順

正規表現の検索結果1 - 40 件 / 208件

  • 見落としがちなURL正規化によるパストラバーサル | セキュリティブログ | 脆弱性診断(セキュリティ診断)のGMOサイバーセキュリティ byイエラエ

    高度解析部アプリケーションセキュリティ課の金子です。 パストラバーサル(またはディレクトリトラバーサル)はXSSやSQLインジェクションに並んでWebアプリケーションに対する代表的な攻撃手法のひとつです。本記事では、パストラバーサルの中でもURL正規化によるパストラバーサルに焦点を当てて攻撃の発生原理やよくある事例について解説します。関連して、PHP向けのAWS SDKで発見したS3バケットに対するパストラバーサルの脆弱性CVE-2023-51651についても紹介します。 2種類のパストラバーサル パストラバーサルは../のような文字列を含んだ文字列の正規化処理(normalization)を悪用して、アプリケーションが予期しない"領域"に対してアクセスを行う攻撃です。正規化処理を行う対象によって分類することが可能で、次の2種類のパストラバーサルが代表的です: ファイルシステムに対するパス

      見落としがちなURL正規化によるパストラバーサル | セキュリティブログ | 脆弱性診断(セキュリティ診断)のGMOサイバーセキュリティ byイエラエ
    • 「Ruby 3」系統の正規表現コンパイラーに情報漏えいの脆弱性、修正版がリリース/v3.0.7、v3.1.5、v3.2.4、v3.3.1への更新を

        「Ruby 3」系統の正規表現コンパイラーに情報漏えいの脆弱性、修正版がリリース/v3.0.7、v3.1.5、v3.2.4、v3.3.1への更新を
      • 文字数のカウントはどれが正解なのか?

        A. ユースケース次第でどう実装すべきかは変わる。Intl.Segmenter が万能というわけでもない。 (クソ最悪な小バズをかましてしまったので、贖罪も兼ねて記事を書きました) 「文字数を数える」のは難しい 「文字数を数える」実装は意外と難しいです。というのも、アルファベットや数字だけなら str.length でも正しく数えられますが、絵文字や異体字などが入った文字列は見た目どおりに数えられません。

          文字数のカウントはどれが正解なのか?
        • Regexide

          Why XML Comments matter XML is a popular format for storing and sharing data. It was explicitly designed for people and programs to read and write data.[1] From spreadsheets to save states, most modern software and games parse and write XML. XML comments are special notes that parsers should not treat as data. XML comments start with <!-- and end with -->. Technically XML comments must not contain

          • なぜ正規表現の行頭と行末を表す記号として「^」と「$」が採用されたのか?

            なぜ正規表現では「^」と「$」という記号を行の先頭・末尾を示す記号として採用したのかという歴史について、ソフトウェアエンジニアのヒレル・ウェイン氏がブログに投稿しました。 Why do regexes use `$` and `^` as line anchors? • Buttondown https://buttondown.email/hillelwayne/archive/why-do-regexes-use-and-as-line-anchors/ 正規表現は「文字列の集合を一つの文字列で表現する方法の一つ」で、例えば「/^G.*/」という一つの文字列を使用して「Gから始まる文字列全て」のようにたくさんの文字列の集合を表現できます。そうした正規表現で使用される文字のうち、「^」は行頭に一致し、「$」は行末に一致する文字となっています。 これら2つの文字はQEDテキストエディタのケ

              なぜ正規表現の行頭と行末を表す記号として「^」と「$」が採用されたのか?
            • 正規表現が"$"と"^"をラインアンカーとして採用した理由 | ソフトアンテナ

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

                正規表現が"$"と"^"をラインアンカーとして採用した理由 | ソフトアンテナ
              • Regex character “$” doesn't mean “end-of-string”

                This article is about a bit of surprising behavior I recently discovered using Python's regex module (re) while developing SBOM tooling for CPython. Folks who've worked with regular expressions before might know about ^ meaning "start-of-string" and correspondingly see $ as "end-of-string". So the pattern cat$ would match the string "lolcat" but not "internet cat video". The behavior of ^ made me

                  Regex character “$” doesn't mean “end-of-string”
                • サクラエディタでよく使う正規表現たち【備忘録】 - Qiita

                  よくお世話になっている正規表現ですが、毎日使うものでもないので、なかなか覚えることができず。。。 使う度に検索するものもあるので、自分のための正規表現備忘録を作成することにしました。 データ整理などに使っているだけなので、偏りがあるかもしれません。 全角文字だけ

                    サクラエディタでよく使う正規表現たち【備忘録】 - Qiita
                  • はじめに - 作って学ぶ正規表現エンジン

                    はじめに 正規表現は様々なプログラミング言語で利用されている、テキスト処理のためのパターン言語です。 正規表現はテキストエディタでの検索や置換、入力文字列のバリデーションなどプログラミングの様々な分野で実用されています。 ある程度の規模のプログラムにおいて、正規表現を全く利用しない (利用していない) ということはほとんど無く、正規表現は今日のプログラミングにおいて非常に重要なパーツだと言えます。 JavaScriptやRubyといったプログラミング言語では正規表現はファーストクラスのリテラルとして実装されているため、とても簡単に利用できます。 例えば次のRubyプログラミングでは変数fooに入った文字列の部分にfizzかbuzzが含まれるかどうかを、正規表現/fizz|buzz/を使ってチェックしています。 foo =~ /fizz|buzz/ さらに、計算機科学 (コンピューターサイエ

                    • 正規表現ミスって一晩誰もサービスにログインできなくしてしまった話 - Qiita

                      はじめに この記事は、本番環境などでやらかしちゃった人 Advent Calendar 2023の11日目です。 どうも、@_tinojiと申します。実に4年ぶりにアドベントカレンダーに参加しました。 正規表現で1文字消し忘れて、なんぴとたりともサービスにログインできない状態にしてしまったという話をします。正規表現にはまじで気をつけましょうという教訓になれば・・・ 犠牲となったログイン画面 とあるtoBなWebサービスを開発していたときの話です。法人のユーザーが使う管理画面的なイメージです。 当然ログイン機能があって、至って普通なログインなのですが1つだけ特徴がありまして、ログイン画面のURLをアカウントごとに変えています。https://example.com/<uuid>/loginみたいな感じですね。 あまり見ない形式ではありつつも、個別のUUIDを特定されない限りログイン画面に対し

                        正規表現ミスって一晩誰もサービスにログインできなくしてしまった話 - Qiita
                      • Windowsのファイル検索のコツとその仕組み - いおりのパソコン技術メモ

                        注:この記事ではWindows7の画面を使用してますが、Windows10でも同じことができます。 Windowsではファイルの検索は、 フォルダの右上部分にある小さな検索ボックスから検索できます。 しかし、いざ検索してみると 「検索に引っかからない」 「検索が遅い」 「なぜか関係ないものまで検索される」 といった事に悩まされた人も多いのではないのでしょうか? Windowsでファイルを検索するテクニック ここでは、Windows7のファイル検索のシステムの仕組みについて紹介します。 また検索のコツを紹介したいと思います。 長くなるので先に結論だけ言います。 まず検索ボックスに入力する方法です。 例えば「word」という単語を検索したい場合、次のように入力します 「~"*word*"」 wordの前後にアスタリスク「*」とダブルクォーテンションマーク「"」で囲み、 一番前にチルダ「~」を付

                          Windowsのファイル検索のコツとその仕組み - いおりのパソコン技術メモ
                        • 正規表現パズル - ゲーム作るくんのサイト

                          正規表現を使ったパズルゲームです。正規表現の学習用ツールとしても使えます!

                            正規表現パズル - ゲーム作るくんのサイト
                          • アイヌ語仮名「ㇷ゚」に対する正規表現の罠

                            導入 アイヌ語は日本語と異なり、閉音節(子音で終わる音節)も存在するので、表記の際音素文字であるラテン文字なら、そのまま 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

                              アイヌ語仮名「ㇷ゚」に対する正規表現の罠
                            • Pike VMとEarley法の関係についてRubyで実装して考えてみる | makenowjust-labs/blog

                              正規表現マッチングの実装手法の1つとしてPike VMと呼ばれるものがあります。 これはGo言語の正規表現実装やRustのregex crateで使われている手法であり、正規表現rrrと入力文字列wwwに対してO(∣r∣×∣w∣)O(|r| \times |w|)O(∣r∣×∣w∣)の計算量でマッチングができるのが特徴です。 Earley法はJay Earleyの提案した文脈自由文法 (CFG) の構文解析手法の1つです。 すべてのCFGを構文解析できる手法で最悪計算量はO(∣w∣3)O({|w|}^3)O(∣w∣3)ですが、無曖昧であればO(∣w∣2)O({|w|}^2)O(∣w∣2)で、決定的であればO(∣w∣)O({|w|})O(∣w∣)で構文解析ができます。 実装してみると分かりますが、Pike VMとEarley法には類似している点があり、Earley法をPike VMの発展系の

                                Pike VMとEarley法の関係についてRubyで実装して考えてみる | makenowjust-labs/blog
                              • 正規表現とは何なのか、makenowjustが正規表現に興味を持ったきっかけ。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.1 - STORES Product Blog

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

                                  正規表現とは何なのか、makenowjustが正規表現に興味を持ったきっかけ。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.1 - STORES Product Blog
                                • スラッシュの有無だけでセキュリティにとんでもない大穴が空いてしまうNginxのありがちな設定ミスについて実例を踏まえて専門家が解説

                                  多機能なウェブサーバーとして2004年に登場したNginxは、2023年6月時点では業界トップシェアとなるほど人気を集めるサーバーです。そんなNginxの設定において、スラッシュを一つ付けるか付けないかの差で大きなセキュリティホールができてしまう問題について、大手パスワードマネージャーやGoogle製のツールの例をとりあげてセキュリティアナリストのダニエル・マツモトさんがブログで解説しています。 Hunting for Nginx Alias Traversals in the wild https://labs.hakaioffsec.com/nginx-alias-traversal/ Nginxの設定には、特定のURLへのアクセスをどう処理するべきかを記述できる「location」というディレクティブが存在しており、URLをサーバー内のファイルに対応させるのによく利用されています。例

                                    スラッシュの有無だけでセキュリティにとんでもない大穴が空いてしまうNginxのありがちな設定ミスについて実例を踏まえて専門家が解説
                                  • Regex engine internals as a library - Andrew Gallant's Blog

                                    Over the last several years, I’ve rewritten Rust’s regex crate to enable better internal composition, and to make it easier to add optimizations while maintaining correctness. In the course of this rewrite I created a new crate, regex-automata, which exposes much of the regex crate internals as their own APIs for others to use. To my knowledge, this is the first regex library to expose its interna

                                    • 日常でも役立つかも?Web広告運用でも使う「正規表現」の基本 - リスティング広告運用代行ならASUE

                                      こんにちは! ASUE株式会社広報のN村です。 Web広告運用やWebマーケティングに関連した業務をしている方は、一度はどこかで「正規表現」というものを聞いたことがあるのではないでしょうか? 実際に正規表現の表記を一見すると暗号のような不可解な文字列に見えるかもしれませんが、基本的なことを知っておくと日々の業務にも役立つので、簡単にご紹介したいと思います。 ちなみに、わたしは日常でもGmailから特定の文字列を正規表現を使用して抽出→カレンダーやタスクに自動登録していて、例えばこれでチケットの当選→支払のタスク登録を行なったり、ホテルの予約→予約メールから自動でカレンダーへ予定登録などを行なっています。役立ちますね。 正規表現とは? 正規表現とは、文字列のパターンを汎用的に書き表す表記法のことです。主に、文字列の検索や置換などを行うときに使用します。 例えば、「1192年、源頼朝は征夷大将

                                        日常でも役立つかも?Web広告運用でも使う「正規表現」の基本 - リスティング広告運用代行ならASUE
                                      • NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表

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

                                          NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表
                                        • プログラム中の文字列抽出機能を自動修正する技術を世界に先駆けて実現~専門知識をもたない開発者でも正規表現の修正が容易に~ | ニュースリリース | NTT

                                          日本電信電話株式会社(本社:東京都千代田区、代表取締役社長:島田 明、以下「NTT」)と学校法人早稲田大学(本部:東京都新宿区 理事長:田中愛治 以下、「早稲田大学」)は、情報漏洩やサービス停止の原因となりうる文字列抽出機能の誤りを自動修正する技術を世界で初めて実現しました。Webサービスにおけるユーザの入力値などから任意の文字の並び(文字列)を抽出する場合、一般的に文字列パターンを表すために正規表現(※1)と呼ばれる記法が利用されています。正規表現は複雑な文字列パターンを簡潔に記述可能である反面、非常に難解であり、誤った記述が修正されないまま残っている事例が確認されています。 本技術により、専門知識を持たない開発者でも正規表現の誤りを自動修正することが可能になるため、安全なサービスの実現が期待できます。 本技術の詳細は、2023年6月17日に開催されるプログラミング言語分野の最難関国際会

                                            プログラム中の文字列抽出機能を自動修正する技術を世界に先駆けて実現~専門知識をもたない開発者でも正規表現の修正が容易に~ | ニュースリリース | NTT
                                          • Regular expressions in JavaScript

                                            Regular expressions can be daunting, but they don't have to be! Learn everything you need about regular expressions and how to use them in JavaScript. The string is arguably the most essential data type in programming; every programming language and software in the world uses strings in one way or another. It enables humans to easily communicate with sophisticated programs and machines. One thing

                                              Regular expressions in JavaScript
                                            • Devina.io

                                              Your online development toolkit76 advanced tools for developers, designers and content editors! All categoriesGeneralTextTimeEncodingMediaNetworkRegexProgrammingHardwareSecurityWebsiteReportsOther external tools

                                              • RubyKaigi 2023での発表の「2進数の足し算を計算する正規表現」の解説

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

                                                  RubyKaigi 2023での発表の「2進数の足し算を計算する正規表現」の解説
                                                • 正規表現を豊かにする ES2024 RegExp v (unicodeSets) フラグ

                                                  【2023/05/17 変更】 2023年5月の TC39 会議で Stage 4 になったため、タイトルを変更 HTML Standard の pattern 属性に取り込まれたので修正 ES2024 RegExp v (unicodeSets) フラグ ES2024 に RegExp v (unicodeSets) フラグというものがあります。これは既存の u (unicode) フラグを改善して置き換え、機能追加することを目的としています。 詳しい内容については V8 や 2ality による解説記事が詳しいです。ここではその概要をピックアップして述べたいと思います。 複数のコードポイントからなる絵文字の対応(Unicode Properties of Strings) ES2015 に u (unicode) フラグが導入され、コードポイント単位で正規表現を扱えるようになりました。

                                                    正規表現を豊かにする ES2024 RegExp v (unicodeSets) フラグ
                                                  • 正規表現でのURLのチェックとバイパス | 技術者ブログ | 三井物産セキュアディレクション株式会社

                                                    最近はMBSDでWebアプリケーションスキャナの開発をしている寺田です。 Webアプリケーションを開発していると、セキュリティの観点でURLをチェックしなければならないことがしばしばあります。本日の記事では、そのようなURLのチェックを如何に行うか、正規表現を使う場合の注意点や、バイパス方法などについて書きたいと思います。 本記事で想定するのは、ブラウザからパラメータとして来るURLをチェックしてリダイレクトやリンクのURL等として使ったり、ブラウザから来たOriginヘッダ等のURLをチェックしてアクセス制御をするケースです。その中でも、以下のようにサブドメイン部分(★の部分)を可変にする状況を主に想定します。 https://★.example.jp/… よく使われてそうなチェック用の正規表現と、そのバイパスは以下のとおりです。 正規表現: ^https://.+\.example\.

                                                      正規表現でのURLのチェックとバイパス | 技術者ブログ | 三井物産セキュアディレクション株式会社
                                                    • 正規表現:文字の「繰り返し」と、回数の指定 | WWWクリエイターズ

                                                      正規表現において、特定の文字やパターンの繰り返しを記述するには、しばしば特殊文字「量指定子」を利用します。 今回、量指定子を使った、文字の繰り返しの正規表現についてまとめました。 繰り返しを表現する「量指定子」 直前の文字やパターンの繰り返し(連続)を表現する特殊文字を「量指定子」と呼びます。「何回繰り返すのか」について、回数か、または範囲を指定する記述となります。 0回以上の繰り返し「*(アスタリスク)」 代表的な量指定子の1つが「*(アスタリスク)」です。これを使って「直前のパターンの0回以上の繰り返し」を表現できます。 // 正規表現 /あぁ*、青春の日々。/ // マッチする文字列の例 あ、青春の日々。 あぁ、青春の日々。 あぁぁぁぁぁぁ、青春の日々。 1回以上の繰り返し「+(プラス)」 アスタリスクによく似た繰り返し表現が「+(プラス)」です。これは、「直前のパターンの1回以上の

                                                      • 全年齢向け同人誌をネット販売しようとしたら「ロリ」という文字列が含まれているので販売出来ないと怒られた話→「ツナ缶のいかかがわしい本…」「カロリーwww」

                                                        長井ずみ @zumix30contacts ツナ缶が好きです。個人でツナ缶を開発製造したほか、国産ツナ缶を中心に200種くらい食べました。ツナ缶のことだけ書いて128万PVのブログ「zu-mix3.0」公開してます お仕事はzumix30contacts@gmail.comまで jp.bloguru.com/zumix

                                                          全年齢向け同人誌をネット販売しようとしたら「ロリ」という文字列が含まれているので販売出来ないと怒られた話→「ツナ缶のいかかがわしい本…」「カロリーwww」
                                                        • 正規表現でガチャを回せる投稿サイトを作った話

                                                          (映像もつくりました) 正規表現ガチャ(英語名:Regech)という、正規表現から生成されるランダムな文字列でガチャを引ける投稿サイトをNext.jsで個人開発した話です。 筆者について 今までPHPやjQueryで開発をしてきた19歳です。 制作期間は20日ほどです。 もしよければ、読んで・遊んでいってもらえたら嬉しいです! つくったもの 正規表現にマッチするランダムな文字列を生成するアプリです。 例:(にゃん?)+→にゃにゃんにゃんにゃ おもしろいガチャができたら投稿することでみんなで遊べるようになります。 ぜひ、おもしろいガチャを作って投稿してください! 正規表現の学習にもおすすめです。 英語対応もしてみたので英語環境からアクセスするか、/en/にアクセスすると英語でも見れます。 私のおすすめガチャ 私のおすすめです。他にもおもしろいガチャが投稿されているので遊んでみてください! リ

                                                            正規表現でガチャを回せる投稿サイトを作った話
                                                          • ChatGPTのヤバさは、論理処理が必要と思ったことが確率処理でできるとわかったこと - きしだのHatena

                                                            ChatGPTのヤバいところは、論理処理が必要だと思っていたことが、じつは多数のデータを学習させた確率処理で解決可能だと示したことだと思います。 たとえば、このように正規表現にマッチする文字列を生成するには、特別に専用の論理処理が必要だと思っていました。 前のブログのときには特殊処理が必要だと考えてましたね。 ウソはウソと見抜ける人じゃないとChatGPTを使うのは難しい - きしだのHatena けど、123_45678world.mdはマッチするのにマッチしないと言っているので、そのような誤りが入ることを考えると、どうも確率処理だけでやっているようです。 考えてみると、3層以上のニューラルネットであれば論理素子を再現できるので、ディープラーニングで論理処理を模倣することは可能なんですよね。 バックプロパゲーションでニューラルネットの学習 - きしだのHatena そもそも論理は、多数の

                                                              ChatGPTのヤバさは、論理処理が必要と思ったことが確率処理でできるとわかったこと - きしだのHatena
                                                            • 特定のパスからのアクセスか判定したい&RegExpとリテラルの差について(JS:正規表現) - Qiita

                                                              Javascript(以下JS)で特定のパスからのアクセスか判定したい場合がありました。正規表現で対応しようと考えたのですが、意外に悩まされたので、簡単にまとめておこうと思います。完成したコードがこちら。 let pathname = '/index/5/edit/' if (new RegExp(/\/index\/.*\/edit/).test(pathname)) { console.debug('該当のURLからのアクセスです。'); } ここでは「/index/5/edit/」というパスからきた場合、debugで「該当のURLからのアクセスです。」という文言を表示させるようにしています。パスに含まれる5ですが、ここではユーザーIDとして、この部分は動的に変わることを想定しています。それでは正規表現の解説をしていきます。

                                                                特定のパスからのアクセスか判定したい&RegExpとリテラルの差について(JS:正規表現) - Qiita
                                                              • JavaScriptで平仮名(ひらがな)を判定する - Qiita

                                                                regex = /*ここに何らかの正規表現*/; regex.test("あいうえお"); // -> true regex.test("あぁ"); // -> true regex.test("aiueo"); // -> false regex.test("あいueo"); // -> false regex.test("あい うえお"); // -> false

                                                                  JavaScriptで平仮名(ひらがな)を判定する - Qiita
                                                                • シンプル図解: 正規表現の (?= ) とか (?! ) とか (?<= ) とか (?<! ) とか - Qiita

                                                                  入社1年目、趣味は整理整頓、 @pal4de です。 正規表現が大好きです。 先日投稿した記事が好評いただき本当にうれしかったです。もっとたくさんの人に読んでもらいたい!!! さて、上の記事で紹介したのは単語境界 \b でしたが、これは先読み/後読みを駆使して下記の通りに表せると紹介しました。 便利な\bですらショートハンドに過ぎず、真に強力なものは 先読み(?=...)と後読み(?<=...) だということを主張したい!!! わかりすい図解も添えましたので、是非お楽しみください🏝️ 正規表現の記号は4種類 先読みの紹介に入る前に、改めて正規表現を俯瞰してみましょう。 誤解を恐れずに言えば、正規表現に出てくる記号の種類は4つしかないといえます1 2。 このようにとらえてみると、正規表現と向き合うのがだいぶ楽になります。体系化された理解への第一歩ですね 🗿 図にもある通り、 行頭 ^ も

                                                                    シンプル図解: 正規表現の (?= ) とか (?! ) とか (?<= ) とか (?<! ) とか - Qiita
                                                                  • 正規表現入門決定版 - Qiita

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

                                                                      正規表現入門決定版 - Qiita
                                                                    • キャッシュによるRubyの正規表現のマッチングの高速化の紹介 - クックパッド開発者ブログ

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

                                                                        キャッシュによるRubyの正規表現のマッチングの高速化の紹介 - クックパッド開発者ブログ
                                                                      • たった4文字でコード検索の精度がブチあがる正規表現 - Qiita

                                                                        まだまだ入社1年目、株式会社LIFULLの暴れ回る新卒、 @pal4de です。 正規表現が大好きです。 これは、その中でもとくにお気に入りな正規表現「単語境界 \b」の検索における威力を説き、褒め称える記事です。 「正規表現、まァ基本は一通り勉強したな...」 というあなたにオススメしたい、ステップアップにピッタリなヤツです。 これは何? 改めて、 正規表現パターン \b は「単語境界」を表す記法です1。 Word BoundaryのBですね。 ここでは、「単語」は単語構成文字 \w = [A-Za-z0-9_] の連続と定義します2。 挙動の例 実際の挙動を見てみるとこんな感じ3。 正規表現 検索対象文字列 マッチする位置

                                                                          たった4文字でコード検索の精度がブチあがる正規表現 - Qiita
                                                                        • Speeding up the JavaScript ecosystem - one library at a time

                                                                          Whilst the trend is seemingly to rewrite every JavaScript build tool in other languages such as Rust or Go, the current JavaScript-based tools could be a lot faster. The build pipeline in a typical frontend project is usually composed of many different tools working together. But the diversification of tools makes it a little harder to spot performance problems for tooling maintainers as they need

                                                                            Speeding up the JavaScript ecosystem - one library at a time
                                                                          • 非公式 PHP 8.1のmbstringアップグレードガイド - てきとうなさいと。べぇたばん

                                                                            PHP 8.1へのアップグレードにまつわるまとめ PHP 8.1へのアップグレードには、mbstringにまつわるマニュアルに記述されない後方互換性のない変更が含まれることがあります。そのことを周知するべく、この記事を書くことにしました。 私てきめんは、PHPカンファレンス 2022にて、「治っていくmbstring 令和時代の文字化け」というタイトルでトークしています。以下スライドも参考にしてください。 Major overhaul of mbstringについて PHP 8.1から、Major overhaul of mbstringと呼ばれる、mbstringの大規模改修の内容が反映されるようになりました。困ったことに、RFC(Request For Comments)やChangelog、マニュアルにない内容で、mbstringを多用するPHPユーザーにとてつもない困惑をもたらすこ

                                                                              非公式 PHP 8.1のmbstringアップグレードガイド - てきとうなさいと。べぇたばん
                                                                            • 第2回 Pythonの脆弱性 ~ReDOS~ | gihyo.jp

                                                                              では、なぜこのようなことが起きてしまうのでしょうか。具体的な脆弱性の解説に移る前に、まずはReDoSのしくみについて説明します。 ReDoSのしくみ ReDosの脆弱性を理解するためには、そもそも正規表現によるマッチングを行う処理系である、正規表現エンジンのしくみについて知る必要があります。 正規表現エンジンの概要 正規表現エンジンとは、簡単に言えば「ユーザーから受け取った文字列(入力文字列)が、正規表現で表される文字列と合致するか否か」を判定するプログラムです。そしてこのプログラムのキモとなる「正規表現文字列の解釈」と「入力文字列が合致するか否かを判定する部分」は、「⁠有限オートマトン」を利用して実現しています。 具体的には、正規表現の文字列を有限オートマトンに変換後、入力文字列を有限オートマトンの入力として与え、文字列中に正規表現にマッチする部分があるか否かを、有限オートマトンの状態を

                                                                                第2回 Pythonの脆弱性 ~ReDOS~ | gihyo.jp
                                                                              • ECMAScript proposal: RegExp flag `/v` makes character classes and character class escapes more powerful

                                                                                ECMAScript proposal: RegExp flag /v makes character classes and character class escapes more powerful In this blog post, we look at the ECMAScript proposal “RegExp v flag with set notation + properties of strings” by Markus Scherer and Mathias Bynens. The new flag /v  # The proposed new regular expression flag /v (.unicodeSets) enables three features: Support for multi-code-point graphemes (such a

                                                                                • 覚えれば一生もの! ウェブエンジニアのための正規表現活用入門 - ICS MEDIA

                                                                                  正規表現は文字列の検索や置換を行うための強力で便利なツールです。基本をマスターすれば開発から日常の事務作業までさまざまな場面でラクをできる魔法の道具ですが、見た目がちょっと分かりづらいので、避けている方もいるのではないでしょうか? 筆者の個人的観測ですが、とりわけフロントエンドのエンジニアには正規表現に苦手意識を感じている方が多いようです。 この記事では正規表現の基本と、正規表現がどこで使えてどれだけ便利になるのかを紹介します。 正規表現の基本:正規表現ってそもそも何? 正規表現(regular expression)は、ごく簡単にいえば「さまざまな文字列のバリエーションをひとつの文字列で表現したもの」です。たとえば、郵便番号の7桁の数字には(実際に使われていないものも含めれば)一千万通りのバリエーションがありますが、正規表現を使えば次のようにひとつの文字列で表現できます。 ▼「7桁の数字

                                                                                    覚えれば一生もの! ウェブエンジニアのための正規表現活用入門 - ICS MEDIA