ECMAScript RegExp semantics tweaks Daniel Ehrenberg (Google) Michael Saboff (Apple)
という文字列から”ABC”という文字列とその位置(index)を取ろうとすると、非常に面倒な書き方をする必要があります。 "ABC ABC".match(/(ABC)/g) では文字列は取れますが、indexを取ることができません。 これをやるにはmatchではなく、gフラグ付き正規表現とexecやreplaceを使ってやる必要があります。 これを直感的に行うString.prototype.matchAllというProposalも存在しています。 String.prototype.matchAll 今回はこのmatchAll的なものと、キャプチャした内容と位置を取得出来るmatchCaptureGroupAllをもったmatch-indexというライブラリを書きました。 azu/match-index: Get index of each capture. const captureGr
たまに漢字にマッチする正規表現パターンを書きたいときがあります。Perl の正規表現だと Unicode のスクリプト名を使って \p{Han} で漢字にマッチさせられるのですが、JavaScript ではそうはいきません。JavaScript の正規表現には以下のふたつの問題があります。 Unicode スクリプト名の指定 (\p{...}) に対応していない。 そもそも Unicode の符号位置に対してマッチさせられない (UTF-16 における符号単位に対するマッチになる)。 BMP 外の文字にマッチさせたいときは、サロゲートペアの符号単位を記述する必要がある。 これに関しては ECMAScript 2015 で導入された /u フラグで解決する見込み。 とはいえ、解決不能な問題というわけでもないので、Perl の \p{Han} を JavaScript に移植してみましょう。\
最近、こつこつと Chiffon というECMAScriptのパーサを書き進めています。 この Chiffon の主な解析方法は正規表現です。 というのも、前に書いたJavaScriptコードをトークンに分解する正規表現が発端で、これを改良し、es6 にも対応させようとしています。 ECMA-262 の仕様を調べながらパーサを書いて、今まであまり知らなかったことがでてきたり、 いろんな構文パターンをテストしていくうちに、正規表現のミスや修正が必要なものがでてきました。 数値リテラル 数値リテラルにマッチする正規表現は /0(?:[xX][0-9a-fA-F]+|[0-7]+)|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|[1-9]\d*/g でいいかと思っていましたが、 ECMA-262 11.8.3 Numeric Literals をあらためて見ると表現が足りないこと
After 3+ years, XRegExp 3.0.0 has been released. Standout features are dramatically better performance (many common operations are 2x to 50x faster) and support for full 21-bit Unicode (thanks to Mathias Bynens). I’ve also just finished updating all the documentation on xregexp.com so go check that out. If you haven’t used XRegExp before, it’s an MIT licensed JavaScript library that provides augme
RegExp.prototype.exec(str) # If /g is not set, matching always starts at the beginning, but skips ahead until a match is found. REGEX.lastIndex is not changed. const REGEX = /a/; REGEX.lastIndex = 7; // ignored const match = REGEX.exec('xaxa'); console.log(match.index); // 1 console.log(REGEX.lastIndex); // 7 (unchanged) If /g is set, matching starts at REGEX.lastIndex and skips ahead until a mat
Read it now on the O’Reilly learning platform with a 10-day free trial. O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers. Book description Leverage the power of regular expressions to create an engaging user experience In Detail Regular expressions are patterns or templates that allow you to define a set
κeenです。正規表現技術入門という本の書評が望まれているようなので今日買ってきて読みました。 私のバックグラウンドと目的 バックグラウンドは RubyとUnixの正規表現はそこそこ使ってる ドラゴンブックは読んだことある RE2の概略も知ってる VMベースの言語処理系のコミッタなのでVMへの理解もある Standard MLの正規表現エンジンを開発中。機能はほぼ揃ってる な感じです。で、実装中の正規表現エンジンがこの本で紹介されてるVM型でもDFA型でもなくVM型の素朴な形、ASTのインタプリタで 実装されてるので インタプリタのまま追加出来る機能はないか 高速化を目指すならVM化とDFA化どちらがいいか (既存のSMLの正規表現エンジンではVMバックエンドやDFAバックエンドでグルーピングが使えないので)高速な手法でのグルーピングの実装方法が知りたい 後方参照の実装方法が知りたい など
特定コマンドの正規表現で使えるメタ文字が何だかわからない! 正規表現自体は知っているけど、それが今から使おうとしているコマンドで使えるものなのかわからずに困っている人も多いと思うのでまとめてみた。 たった3つの正規表現メタ文字セットだけ知ればいい コマンドによって、対応している正規表現メタ文字の範囲には違いがある。しかし、最低限知っておけばよいのは2種類+1サブセットの3つだけだ。 BRE(基本正規表現)メタ文字セット ERE(拡張正規表現)メタ文字セット AWKのサブセット もちろん、これ以外にもGNU拡張正規表現メタ文字セットやPerl拡張正規表現メタ文字セット、JavaScript拡張正規表現メタ文字セットなどいくつかあるのだが、「どのUNIXでも(=POSIXで)使える」という特長を持たせたいのであれば、それらは覚えても意味がないので上記の3つさえおさえておけばよい。(例えPOSI
この本の概要 最先端の正規表現技術にスポットを当てた,初学者向け技術解説書。プログラマにとって欠かせないツールである正規表現。便利な正規表現の実力を発揮させるには,動作原理から理解するのが近道です。 本書では,パターンマッチの基本から,基本三演算および理論/数学的背景,VM型/DFA型という二大最新エンジン実装まで徹底解説。また,処理系を踏まえた効率的な書き方や落とし穴を避ける技法もしっかり押さえます。狙いどおりのパターンを綴り,高速に文字列を取得したい,そんなエンジニアの方々へ,長く役立つ技術知識を満載してお届けします。 こんな方におすすめ 正規表現をもっと便利に使いこなしたいプログラマの方々 正規表現とは何かを知りたい方 執筆担当一覧
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く