本当です. 世界最速のgrep 作りました. このネタで学会発表とかしました. #=> JSSST, プログラミング・シンポジウム 「動的なコード生成を用いた正規表現マッチャの実装」 最近... 「世界最速のgrep」とはしゃいでも研究室内で相手にされなくなってきました. 先輩「へぇ, そうなの.」 同僚「はいはい最速最速.」 後輩「grepってなんですか?」 先生「そんなことより並列化は? 英語で論文書いて. PS3上で動かして.....」
名前 説明 演算子 構文 エスケープシーケンス キャラクタクラス アンカー 量指定子 拡張構造(EXTENDED CONSTRUCTS) 変数 関数 用語 Titlecase AUTHOR SEE ALSO THANKS 名前 perlreref - Perl の正規表現のリファレンス 説明 本ドキュメントは、Perl の正規表現のクイックリファレンスです。 完全な情報は、perlre と perlop、また、本ドキュメントの ”SEE ALSO セクションを参照してください。 演算子 =~ 正規表現が適用される変数を決定します。省略された 場合には、$_ が使われます。 $var =~ /foo/; !~ 正規表現が適用される変数を決定し、マッチの結果を反転します。 マッチが成功すれば偽を返し、失敗すれば真を返します。 $var !~ /foo/; m/pattern/igmsoxc パ
2007年10月30日20:00 カテゴリLightweight Languages perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン 久々の勝手に添削。今回はこちら。 40行で作るPerl用テンプレートエンジン 正規表現がらみなので、Perl以外でも有用。 添削箇所は、こちら。 40行で作るPerl用テンプレートエンジン sub convert { return unless defined(my $str = shift); $str =~ s{&}{&}gso; $str =~ s{<}{<}gso; $str =~ s{>}{>}gso; $str =~ s{\"}{"}gso; $str; } これの最初のsubstitutionが&ではなくて&ではないかというのはさておき、こういった場合、何度も正規表現をかけ
1. テスト文字列 file:///C:/jintrick/Personal/ 2. 正規表現 3. オプション 4. 置換テキスト 入力欄の内容がeval()されます。文字列は""で括って下さい。RegExp.$1 等と組み合わせる場合は + 記号で結びます。マッチした文字列を削除する場合は、""とだけ入力します。 Match Replace ここに結果が Foot note この記事のURI参照 http://members.jcom.home.ne.jp/jintrick/Personal/regExp.html#inputArea ご案内 Personnelより、 とリンクを辿るとこの文書「 正規表現てすとぺーじ 」に行き着きます。 Site searchより、任意のキーワードを含んだサイト内の文書をリストアップできます(Googleを利用)。 S
RFC† RFC:3986 Uniform Resource Identifier (URI): Generic Syntax STD: 66、 Updates: 1738、 Obsoletes: 2732, 2396, 1808 [Studying HTTP] によるRFC 3986 の日本語訳 ↑ Collected ABNF for URI (RFC:3986 Appendix A.)† URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty URI-reference = URI / relative-ref absolute-URI = scheme "
更新日 2019/5/3 戻る Perlメモへ - メールアドレスの正規表現へ Perl正規表現雑技へ 更新履歴 2019/05/03 「制御文字を除去する」「参考文献」RFC5321日本語訳のリンク修正 2009/08/13 $atextのバグ修正 2009/05/06 「正規表現を簡略化する」追記 2009/04/29 「旧形式を削除する」追記 2009/04/13 「IPアドレスを除去する」追記 目次 RFCに準拠したメールアドレスの正規表現 コメントと空白文字を除去する 制御文字を除去する IPアドレスを除去する 旧形式を除去する 正規表現を簡略化する 参考文献 RFCに準拠したメールアドレスの正規表現 メールアドレスについては RFC 5322 に addr-spec として書かれています. 下記は RFC 5322 に従って導き出した正規表現です. 14,277バイトあります.
これは何でょう? の回答。 一発目で答えが出てしまいましたが、答えは E-mail address ですね。E-mail address の形式は RFC 5321 で定義されています。 RFC 5321 Simple Mail Transfer Protocol 4.1.2. Command Argument Syntax より Domain = sub-domain *("." sub-domain) sub-domain = Let-dig [Ldh-str] Let-dig = ALPHA / DIGIT Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "
Pg職に転職したいWebサイト制作。PHPとかMySQLとか。symfony、CakePHP、Perl勉強。 正規表現によるメールアドレスの有効性のチェックは非常に複雑で困難である。 ソーシャルブックマークでも度々エントリが上位になる。 ■ PHPでメールアドレスを確認する「正しい方法」(Linux Journal誌の記事より) リンク先で紹介しているのは、以下の RFC 準拠によるメールアドレスチェック。 メールアドレスは local part と domain が @ で区切られて構成されている。(RFC2822) local partは、アルファベット、数字、以下の記号 ! # $ % & ' * + - / = ? ^ _ ` { | } ~ で、ドット「 . 」で区切られている場合がある。ただし、最初、最後、他のドットの隣にあってはいけない。(つまり連続しないことということか)
本屋で立ち読みしてたら、Linux Journalって雑誌に "Validate an E-Mail Address with PHP, the Right Way" って記事が載っているのを発見したので、簡単に要約を。 まず、以下のメールアドレスは「正しい」アドレスである、と紹介。 Abc\@def@example.com customer/department=shipping@example.com !def!xyz%abc@example.com これは、RFC3696からの引用。 RFC3696は、Application Techniques for Checking and Transformation of Names (名前の検査と変換のアプリケーション技法) ってやつで、そのなかに、 "Restrictions on email addresses" って章があるみたい。
VB系では、文字列の両端にあるスペースを削除するに有名なTrimがあります。 しかし、Perlでは、残念ながらTrimはありませんが、以下の正規表現で一発です。 $string =~ s/^\s*(.*?)\s*$/$1/; ちょっと解説です。 まずは、\sは、文字クラス[ \t\n\r\f](左端にスペース含む)と同義です。 始めに、文字列の先頭から\sの0回の連続にマッチさせる。 つぎに、任意1文字の0回の連続に最小マッチさせて、これを$1に記憶する。 そして、\sの0回の連続を後尾までマッチさせる。 最後に、文字列全体を$1で置換する。 以下のように、2回に分ければ、両端でも片方のみでも大丈夫です。 $string =~ s/^\s+//; $string =~ s/\s+$//; 追記:上記は、半角系のスペース文字に対するTrimです。全角系のスペースを考慮に入れると以下が参考にな
新しくないゲームなどのブログ ノンビリと古めのゲーム関連の話題を書きつづるブログ。 …のつもりだったが、やっぱりなんでも適当に書くブログへと変更。。 私自身はmacユーザーだが、macユーザーの悩みの種の1つであるのが 「アスキーアート(AA)をmacのブラウザで見るとずれてうまく表示できない」 という問題。 macでは表示されるフォントに対し、鬼のようにアンチエイリアスがかかるためそうなる。 これに対し、mac用2chビューアの中にはアスキーアートを正常に表示させる機能を導入しているものがある。 仕組みとしては、”アスキーアートとして判定される文字列”であると判定した場合、その文字列の表示はアンチエイリアスを解除した等幅フォントで行う、というもののよう。 私はBathyScapheというオープンソースの2chビューアを愛用しており、これがその機能を備えているため、どのような判定を行って
重箱の隅で恐縮ですが。弾さんは (function(e){ e.innerHTML = e.innerHTML.replace( /東京都?([\u3200-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]+)/g, '首都$1東京' ) })(document.body)漢字を判定する正規表現が工夫のしどころでしょうか。[一-龠]はUnicode時代にはちょっと古い。grep CJK /usr/local/lib/perl5/5.10.0/unicore/Blocks.txtが参考資料代わりです。CJK Unified Ideographだけ欲しければ[\u4E00-\u9FFF]でも行けます。 404 Blog Not Found:javascript+regexp - ていうか首都最強東京bookmarklet とおっしゃってるけど、[\u4E00-\u9FFF]
一般的な正規表現を使ったツールでは中級編までの内容がそのまま使えると思います。 たとえばSedやAWKならば問題なく使えます。 ここではPerl等のかなり強力なツールでしか使えないような表現を説明します。 もちろん、K2Editorでも使える表現です。 以前出てきた繰り返し表現では、繰り返し回数を指定する事はできませんでした。 たとえば、aの3回繰り返しを検索したい場合、 「a+」では3回繰り返し以外でもマッチしてしまいます。 ですから、「aaa」としなければなりません。 拡張された表現では繰り返し回数を指定できます。 基本的な書式は「{n,m}」です。 nが最小回数、mが最大回数です。 最大と最小が同じ場合、つまり固定回数の時には 「{n}」と書きます。 aの3回繰り返しは 「a{3}」と書けます。 2回以上5回以下の繰り返しは 「{2,5}」と書けます。 5回以上の繰り返しは 「{5,
ラリー・ウォール氏によって1987年に開発されたスクリプト言語です。 C言語、AWK、sed, sh などの影響を受けて開発され、PHP, Ruby, Python などに影響を与えました。 聖書の中の「高度な真珠」にちなんで pearl と名付けられる予定でしたが、同盟の言語がすでに存在したため Perl と名づけられました。 現在では Perl は "Practical Extraction and Report Language" の略とされています。 プログラミング言語を示すときは先頭大文字で「Perl」、処理系を表すときは先頭小文字で「perl」と表します。 2023年9月現在、5.38 が最新版です。 RHEL7系では 5.16、RHEL8系では 5.26、RHEL9系では 5.32、Ubuntu 22.04では 5.34 がインストールされます。 Windows用の実装として
正規表現ベースの字句解析器を書くときは、narcissusというJSベースのJS処理系のコードを見るといいです http://mxr.mozilla.org/mozilla/source/js/narcissus/jsparse.js 面倒な正規表現の模範解答が載ってます。下手に自分で考えて誤爆するより、一流の人が書いたものを使いましょう 正規表現リテラル /^\/((?:\\.|[^\/])+)\/([gimy]*)/ 文字列(ダブルクォート、シングルクォート共)/^"(?:\\.|[^"])*"|^'(?:[^']|\\.)*'/ → 訂正 Cスタイルコメント(一行、ブロック共) /^\/(?:\*(?:.|\n)*?\*\/|\/.*)/ ↓narcissusについてはyukobaさんのプレゼンを(去年のShibuya.es) http://accelart.jp/shibuyajs
力尽きたりバタバタしてたりで放っておいたマトメを。 SQLite3.3.8以降用 正規表現エクステンション(鬼車 VERSION 2.5.8を利用) sqlite3-onig_20070329.zip 解凍するとソースコードと、IntelMac(.bundle)、Win(.dll)用バイナリが出てきます。 sqlite3.exeを起動して select load_extension('sqlite3-onig.dll'); select * from tbl where field1 REGEXP 'ABC'; のように使えます。sqlite3-rubyを使ったRubyサンプルも入ってますが、これを実行するには次のパッチを当てる必要があります。 sqlite3-rubyでエクステンションを使うためのパッチ 作業レベルのメモは http://d.hatena.ne.jp/yotaropg/2
正規表現機能別逆引きリファレンス GNU grep (2.5.1) GNU egrep (2.5.1) Ruby/鬼車 (5.9.1) Perl (5.8) 秀丸 (HmJre.dll 1.92) Vim (7.1) boost::regex (1.36.0) 任意の1文字 . . . . . . . \C いずれか1文字 […] […] […] […] […] […] […] いずれか以外の1文字 [^…] [^…] [^…] [^…] [^…] [^…] [^…] エスケープ \ \ \ \ \ \ \ 選択 r1\|r2 r1|r2 r1|r2 r1|r2 r1\|r2 r1|r2 r1\|r2 一回または零回(欲張り) ? ? ? ? ? \= ? 零回以上(欲張り) * * * * * * * 一回以上(欲張り) \+ + + + + \+ + n回以上m回以下(欲張り) \{n
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く