Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
2019.02.20 はじめての正規表現とベストプラクティス#7: Unicode文字ポイントとUnicode文字クラスのプロパティ #1: 基本となる8つの正規表現 #2: 正規表現とは何か/ワイルドカードとの違い #3: 冒頭/末尾にマッチするメタ文字とセキュリティ、文字セットの否定と範囲 #4: 先読みと後読みを極める #5(特別編)|と部分マッチのワナ #6: 文字セットのショートハンド #7: Unicode文字ポイントとUnicode文字クラス(本記事) #8: 対象の構造を意識した「適度にDRYな」書き方 #9: .*や.+がバックトラックで不利な理由 10: 危険な「Catastrophic Backtracking」前編 主にRubyを中心としながらも、なるべく一般的な形で正規表現を解説しています。誤りやお気づきの点がありましたら@hachi8833までどうぞ🙇。 ⚓U
といつも思うので、自分用にメモすることで覚えようという魂胆です。 以下はInDesign CS4の正規表現について記述します(たしかCS3から使えたような気がする)。 結論から 名前 英語で 位置 演算子 後読み lookbehind マッチパターンより前の部分 (?<=) 肯定 (?<!) 否定 先読み lookahead マッチパターンより後の部分 (?=) 肯定 (?!) 否定 肯定の場合はパターンの前が「=」、否定の場合は「!」。 英語を見ると「後読み」「先読み」の訳語も納得できそうな気はするのですが、やっぱりわかりにくいです。背後と前方……とか言うとまた混ざるし! 「つぎの電車」と「こんどの電車」はどっちが早く発車するかみたいな感じに似ていますな。 別に演算子さえ覚えてしまえば名前は意識しなくてもよさそうなのですが、せっかくInDesignには正規表現の記述支援機能がついてるので
全角スペースを正規表現でマッチさせたいけど、\s だとマッチしない。これは \s や \d といった正規表現の文字クラスの略記法が ASCII の範囲の文字のみを対象 としているからなんです。 ひどいよ… こんなのってないよ… じゃあ、半角スペースと全角スペースの両方にうまくマッチさせるにはどうしたらいいのでしょう。 それでは、「苗字と名前が半角もしくは全角のスペースで区切られた日本人の氏名の文字列から 正規表現を使って苗字と名前をそれぞれ取り出す」という例をもとに考えてみましょう。 方法1: 文字クラス内で全角スペースを指定する 文字クラス (角括弧) の中に \s と " " (全角スペース) を並べて指定します。でも正規表現に直接全角スペースを入力するのはなんだか嫌ですね。 方法2: Unicode プロパティの blank を利用する Unicode プロパティ といふものありけり
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
[edit] メタ文字列とリテラル、メタ文字とエスケープ 式展開 文字 任意の1文字 文字クラス 特別な文字列に対するマッチ 繰り返し キャプチャ グループ 部分式呼び出し(subexpression call) 選択 アンカー 条件分岐 オプション エンコーディング コメント フリーフォーマットモード 非包含オペレータ (absence operator) (実験的) 一覧 特殊変数 参考文献 正規表現(regular expression)は文字列のパターンを記述するための言語です。また、この言語で記述されたパターンも正規表現と呼びます。 正規表現を用いると、文字列が指定したパターンを含んでいるかどうかを判定し、また含んでいるならばそれが文字列中のどの場所であるかを知ることができます。 /pat/ %r{pat} などの正規表現リテラルや Regexp.new などで正規表現オブジェク
はじめに「はじめての正規表現」がホッテントリ入りしていますが、 導入としては、何に使うのかがわかりやすくて良いのではないかと思います。 あれを見て、基本機能をまとめてみたくなったので、正規表現の基本的な機能について書いてみます。 (正規表現が初めてという人は「はじめての正規表現」を先に見たほうがいいと思います。) 例では「検索」か「置換」をするものとして話を進めていきます。 (「はじめての正規表現」が実例を中心にしたのに対して、こちらは機能を中心に書きます) 正規表現は、プログラミング言語やその他のツールなど、それぞれで微妙な違い(方言)があるので、その点には注意が必要です。 (表記法が違ったり、ここに紹介する機能がサポートされていなかったり、逆に紹介していない機能をサポートしていたりする場合があります) メタ文字とリテラル文字正規表現には、メタ文字とリテラル文字というものがあります。 メ
正規表現と構文図について解説します。オートマトンについても詳しく述べます。オートマトン・スゴロクで遊びましょう! 世間でよく知られている/使われている概念・方法にはこだわらず、僕(檜山)の感覚で一番わかりやすいと思われる筋書きと用語法/図式法を使って説明します。この記事に目を通して“感じ”が掴めたら、形式言語理論の教科書を読み始めることが出来るでしょう。 [追記]この記事の内容に対する具体例は、「正規表現とオートマトン:なんだ簡単じゃん、JavaScriptによる実装」にあります。[/追記] 内容: 正規表現 正規表現の例 構文図 基本記号 連接 選択 省略可能 繰り返し ストレートワイヤーによるレイアウト調整 有限状態オートマトン 有限状態オートマトンの実行 バックトラックと先読み スゴロクとオートマトン コマをたくさん使うスゴロクと並列処理 非決定性オートマトンと決定性オートマトン 正
HTML5で正規表現がサポートされる、といったことをきっかけに、正規表現はプログラマだけでなくWebクリエイター全体のスキルとして求められていくものになっていくのではないでしょうか(参考:あまり知られていないけれど、HTML5では正規表現が使えるようになる )。 ここではそうした正規表現の初学者や、一度挫折したけど再入門したい人、そしてより高度な内容をマスターしたいすべての人のためのリソース集を作りました。 初学者向けには「はじめての正規表現」 「はじめての正規表現」は、文字通り正規表現という言葉は知っていても中味はよく分からない、という初学者の方にぴったりのコンテンツ。紙芝居形式のプレゼンテーションで楽しく正規表現について把握できます。 はじめての正規表現 初学者の方には、次の2つの記事も手っ取り早く読めて概要を把握できますので紹介しておきます。 使うほどに良さが分かる正規表現(1/2)
あるいは、正規表現+置換による、プログラミングができなくても単純なテキスト編集作業を強力に自動化する方法 このTipsの概要 このTipsでは「テキストを、強力に自動的に操作する方法」が得られます。 自動化といっても、プログラミング言語に習熟するのは大変です。 そこで、プログラミングほど、習熟や利用に負荷が掛からず、かつ応用範囲が広い「正規表現」と言われる書式と、テキストエディタなどに付属の「置換」機能を組み合わせたものを解説します。 具体的にできるようになること たとえば「ネットから文章をテキストエディタにコピー&ペーストしたが、変な改行がたくさん入っているので、改行を手動で消す作業をたくさんしないと。」 とか 「ごはん、ご飯、御飯、ゴハン」と、いろんな書き方で書かれている「ごはん」を、全部「ご飯」という表記に統一したい とか 「Skypeからコピペしたら、発言者名がいっぱいついて、消す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く