Ruby の正規表現だけで Brainfuck インタプリタを作ることができました。正規表現の実行は =~ だけなので、ループなども正規表現の内部で実行してます。 https://github.com/shinh/hack/blob/master/bf_rb_reg/bf.rb つまりどういうことができるかというと、 BF_REG という Regexp と BF_SUFFIX という文字列定数があって、 bf という文字列に格納された Brainfuck のコードを BF_REG =~ bf + BF_SUFFIX で実行することができます。出力は $~['o0'], $~['o1'], ... に入っているので、 output = '' 256.times do |i| o = $~["o#{i}"] break if !o output += o end 的なコードで取り出すことができ
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
On Coinheist.com, a crossword puzzle you solve by interpreting regular expressions. PDF download We previously shared this album of Alvin and the Chipmunks singing pop hits, but slowed down to 16 RPM. I recently stumbled upon the project again, and also discovered Volume Two, along… READ THE REST Check out this mind-blowing NPR Music Tiny Desk Concert performed by jazz fusion band Moon Hooch back
Esolang Advent Calendar の10日目になんとなく参加みたいな話です。自己紹介を書いておくと、好きな esolang は見た目よりむしろ中身重視というか、行なわれる処理や処理のしかたがユニークなものを好む傾向があるみたいです。あと先日 世界一の Befunge コーダーであることが判明しました(誇張)。 なにしようかなぁ考えたのですが、私の好きな言語のひとつに sed っていうか正規表現があるので、それについて。どの程度好きかというと、ほとんど 正規表現しか無いような wake という esoteric language を作ってみたことがある程度には好きな感じです。 正規表現ってヤツは普通文字列のマッチングに使うやつで、もちろんループとかは書けないわけですけど、しかしまぁちょっとした計算くらいなら割とできたりします。ループや出力の部分だけ、元の言語の機能から借りてやれ
About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ
吹奏楽コンクール リウマチの調子が悪い!薬の副作用もやばい! 副作用のせいでご飯が全然食べられなくなって顔から痩せていくんだけど、お腹とかお尻から痩せたらいいのに。蓄えがあるから多少痩せたってちょうどいいくるいやけど、幸薄そうに見えるから顔は太ったままがいいなぁ。 お…
Shibuya.pm #16 「夏の正規表現祭り」で、正規表現のお話をさせていただきました。 まぁ、「電話番号にマッチする正規表現」とか「郵便番号にマッチする正規表現」とかよく書かれてるけど、「どれもこれも手緩いよね」って話。 あ、だいぶはしょったかな。 とりあえずスライドに書いたので、発表をご覧になってない方はスライドからご覧ください。 ふと見返すと、このブログで電話番号の正規表現を公表するのは 3 度目ですが、あれからだいぶ経ってますね。 今ではもっと厳密な正規表現を作っています。 そして、Number::Phone::JP に続き、Number::ZipCode::JP という酔狂なモジュールが公開された記念で、郵便番号にマッチする正規表現を今回初めて公開しますが、そもそもここまで厳密な正規表現が公開されること自体、本邦初公開ってヤツでしょう。 Shibuya.pm でも言いましたが
2011-03-01 (Tue)#1Excel の罫線で木構造を描いてあるドキュメントを眺めて毒づきつつ、ふと 2次元空間に対する正規表現を思いついた。 正規表現での単一文字のマッチは、「現在の位置」にある文字があることを確認した後、現在位置を「右に」一文字ずらすという動作である。 そして、単一文字のマッチ以外に「現在の位置」をずらす機能はない。 とすると、そこを右だけじゃなくて上下左右にずらせるようにするだけで、2次元に拡張できるのではないか? そうするための拡張方法はとりあえずふたつ考えられる。 単一文字のマッチで位置をずらすのは変えず、ただしエンジン内でずらす方向を保持し、その方向を修正する指示をつくる。 たとえば、1次元正規表現の [:lit, "a"] と同じ意味が 2次元正規表現では [:cat, [:dir, :right], [:lit, "a"]] で表現できるようにする
The recent discussion about the Yacc is dead paper on Lambda the Ultimate sparked my interest in regular expression derivatives. The original idea goes back to the paper Derivatives of Regular Expressions published in 1964 (!) by Janusz A. Brzozowski. For a more modern treatment of the topic see Regular-expression derivatives reexamined. The derivative of a set of strings with respect to a charact
Rex is a tool that explores .NET regexes and generates members efficiently. Try out Rex in duel mode at http://rise4fun.com/rex (opens in new tab)! The duel mode is a game where you have to guess a secret (hidden) regex. On each attempt, Rex generates strings that match or don’t match the same way as the secret regex. The game uses the ASCII range of characters, i.e. characters from code 0 to 127
ref: 鬼車 正規表現 Version 5.9.1 ref: Ruby Freaks Lounge: 第6回 Ruby M17N 事始め:正規表現編 \g と \k について今までちゃんとわかってなかったけれど、少しわかったような気になったのでメモ。Ruby というより鬼車の話なので、PHP でも使えるかもしれない。試してないけど。 田中哲スペシャル \g の基本 \g で参照される括弧の中身がそこにそのまま書かれたと思えばいい。 re = /\A(?<foo>abc...def)\g<foo>\z/ # \g<foo> を展開して考える # /\A(?<foo>abc...def)abc...def\z/ と同じ意味 p "abc123defabc123def".match(re) # マッチ p "abc123defabc456def".match(re) # マッチ p "abc1
はじめに こんにちは。hirataraです。 本稿は、正規表現エンジン作成の第2回目です。前回は正規表現の数学的な側面を説明しました。今回は正規表現エンジンの実際の評価器となる、NFAとDFAを実装します。 対象読者 正規表現をもっと知りたい方 情報科学分野に興味がある方 正規表現エンジンを実装する必要がある方 必要な環境 サンプルはPython2.5で開発しましたが、2.4の環境でも動くはずです。 Python2.5 が動作する環境 実装する正規表現の仕様 今回から正規表現エンジンの実装に入りますが、実際に手を動かし始める前に、到達すべきゴールを明確にしておきましょう。まず、連載中に実装する正規表現の仕様を決定します。この連載では数学的な定義である3つの正規表現のみを実装し、正規表現が本当にDFAと等価であり、DFAをシミュレートすることで実装できることを確かめます。 文法 これから作る
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く