タグ

regexに関するWindymeltのブックマーク (7)

  • 正規表現の名前つきキャプチャを便利にする - 貳佰伍拾陸夜日記

    Java 7から正規表現で名前つきキャプチャが使えて, Scalascala.util.matching.Regex.Matchでもそれに相当する機能がある(インタフェースや実装はJava標準のものとは別)けれど, ちょっと不便なところをどうにかしているうちに, インデックスによるキャプチャグループの上に独自に名前つきキャプチャグループを実装するような形になった. 使い方はREADMEを見てもらうとして, なぜこんなものがほしくなったのかという話を書いておく. 標準の名前つきキャプチャのよくないところ キャプチャグループの実体と名前の乖離 名前つきキャプチャは正規表現中で(?<name>pattern)のように書くことで, patternにマッチした部分をあとからnameで参照できる. たとえば, Webサーバのルーティング処理で, パス中に名前つきでパターンを書いておけば非常に便利そう

    正規表現の名前つきキャプチャを便利にする - 貳佰伍拾陸夜日記
    Windymelt
    Windymelt 2023/03/16
    公開されてたの知らなかった!!!!!!
  • 正規表現でキャプチャグループを使うときは名前を付けよう

    はじめにJS/TS で正規表現を扱う際、()を使ったキャプチャグループを使うことがあると思います。 キャプチャグループは大きく分けて 2 つの使われ方があり、 1 つはキャプチャした文字列を.match()などで取得したり後方参照するために使われ、 もう 1 つは|を使った論理和のために使われます。 // バージョン番号からそれぞれの数字を取得する const matches = "v7.29.3".match(/v(\d+)\.(\d+)\.(\d+)/); console.log(matches[1]); // => 7 console.log(matches[2]); // => 29 console.log(matches[3]); // => 3 // `Hello, world!`と`Goodbye, world!`のどちらかにマッチするかを判定する const isMatch

    正規表現でキャプチャグループを使うときは名前を付けよう
    Windymelt
    Windymelt 2023/03/16
    良い記事。Scalaでもこういう記法あった気がする。
  • pcrepattern specification

    pcrepattern man page Return to the PCRE index page. This page is part of the PCRE HTML documentation. It was generated automatically from the original man page. If there is any nonsense in it, please consult the man page, in case the conversion went wrong. PCRE REGULAR EXPRESSION DETAILS SPECIAL START-OF-PATTERN ITEMS EBCDIC CHARACTER CODES CHARACTERS AND METACHARACTERS BACKSLASH CIRCUMFLEX AND DO

    Windymelt
    Windymelt 2020/07/23
    “Outside a character class, by default, the escape sequence \R matches any Unicode newline sequence”
  • んっ?−ちゃよて・ちゃよて

    We could not find anything for your request! 御要求のWebページ、画像、ファイルが見つかりません。 トップページへ サイトの内容紹介ページへ

    Windymelt
    Windymelt 2017/02/06
    regexpの構文木(ast)を作るコード
  • PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回

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

    PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

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

    Windymelt
    Windymelt 2016/04/08
    ]これからは使っていきたい
  • regex101: build, test, and debug regex

    An explanation of your regex will be automatically generated as you type.

    regex101: build, test, and debug regex
  • 1