Upgrade to Pro — share decks privately, control downloads, hide ads and more …

まだ正規表現で消耗してるの? / PHP Conference Fukuoka 2016

まだ正規表現で消耗してるの? / PHP Conference Fukuoka 2016

PHPカンファレンス福岡2016のLTスライドです

Kenichiro Kishida

May 29, 2016
Tweet

More Decks by Kenichiro Kishida

Other Decks in Technology

Transcript

  1. · ͩ ਖ਼ ن ද ݱ Ͱ ফ ໣ ͠

    ͯ Δ ͷ ʁ Մ ಡ ੑ Λ ্ ͛ Δ ͱ ͏ · ͘ ͍ ͘ ͠ ͣ ͻ ͜ 1)1ΧϯϑΝϨϯε෱Ԭ ෳࡶͳਖ਼نදݱΛߟ͑Δͷ͸࣌ؒͷແବͩͬͨ ౦ ژ
  2. /(?:(?P<dayOfWeek>(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)|(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))? (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)|(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?: [\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]| [\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n)) (?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))?(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+ (?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]| [\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n)) (?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+) +)))?)),)?(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:\d){1,2}(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)|(?:(?: (?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?

    (?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t]) +(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))? (?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))?(?:\d){1,2}(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?: \n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]| [\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?: [\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?:(?:(?:(?:(?:[\x20\t]) +(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:\d)(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)|(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r \n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]| [\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?: [\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?: [\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))?(?:\d)(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?: [\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]| [\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?: \n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+) (?:(?:\d){2,2}|(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n)) (?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+ (?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+ (?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))?(?:\d){2,2}(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?: (?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0| (?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?: [\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))\:(?:(?:\d){2,2}|(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?: [\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93- \d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?: [\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?: \n)|(?:\r\n))(?:[\x20\t])+)+)))?(?:\d){2,2}(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?: [\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]| [\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n)) (?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))(?:\:(?:(?:\d){2,2}|(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n)) (?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]| [\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))? \)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))?(?:\d){2,2}(?:(?:(?:(?: (?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?: [\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?: (?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?: [\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))))?(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)(?:\+|\-)(?:\d){4,4}|(?:UT|GMT|EST|EDT|CST|CDT|MST| MDT|PST|PDT|[\d65-\d73]|[\d75-\d90]|[\d97-\d105]|[\d107-\d122]))(?:(?:(?:(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?P<comment>\((?:(?:(?:(?:(?:[\x20\t])+(?: (?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?(?:(?:[\d33-\d39]|[\d42-\d91]|[\d93-\d126]|(?:[\d1-\d8]|[\d11]|[\d12]|[\d14-\d31]|[\d127]))|(?:\\(?:[\x21-\x7E]|[\x20\t])|\\(?:\d0|(?:[\d1-\d8]| [\d11]|[\d12]|[\d14-\d31]|[\d127])|\n|\r))|(?P>comment)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?\)))+(?:(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?: [\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+))?|(?:(?:(?:[\x20\t])+(?:(?:\n)|(?:\r\n)))?(?:[\x20\t])+|(?:[\x20\t])+(?:(?:(?:\n)|(?:\r\n))(?:[\x20\t])+)+)))?$/
  3. URI = scheme ":" hier-part [ "?" query ] [

    "#" fragment ] scheme = ALPHA * ( ALPHA / DIGIT / "+" / "-" / "." ) hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty https://www.ietf.org/rfc/rfc3986.txt
  4. $rfc3986 = new VerbalExpressions; // scheme $scheme = new VerbalExpressions;

    $scheme->add("http")->maybe("s") ->_or("ftp"); $rfc3986->startOfLine() ->add($scheme) ->add("://"); /^(?:\(\?\:http\)\(\?\:s\)\?\)\|\(\?\:ftp)(?:\:\/\/)/m
  5. pattern = Hexpress.new. start("http"). maybe("s"). with("://"). maybe { words.with(".") }.

    find { matching { [word, "-"] }.multiple }. has("."). either("com", "org"). maybe("/"). ending
  6. trait Find { public function find($value = null, $named =

    false) { $param = compact('value', 'named'); return is_callable($value) ? $this->addNested(FindValue::class, $param) : $this->addValue(FindValue::class, $param); } public function capture($value = null) { return $this->find($value); } } class FindValue { use Nested; private $hexpression; private $open; private $close; public function __construct($param) { extract($param); $this->hexpression = is_callable($value) ? new Hexpress($value) : $value; $this->open = $named ? "(?P<{$named}>" : '('; $this->close = ')'; } } class Hexpress def find(value = nil, &block) value ? add_value(Nested::Find, value) : add_nested(Nested::Find, &block) end alias_method :capture, :find module Nested class Find include Nested def initialize(value=nil,&block) @hexpression = value || Hexpress.new.instance_eval(&block) @open, @close = "(", ")" end end end end ࠷ۙͷ1)1ͳΒ͔ͳΓ஧࣮ʹҠ২Մೳ
  7. URI = scheme ":" hier-part [ "?" query ] [

    "#" fragment ] scheme = ALPHA * ( ALPHA / DIGIT / "+" / "-" / "." ) hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty https://www.ietf.org/rfc/rfc3986.txt
  8. private function scheme() { return (new Hexpress()) ->find(function ($hex) {

    $hex->matching(function ($hex) { $hex->letter(); }); $hex->many(function ($hex) { $hex->matching(function ($hex) { $hex->letter()->number()->with('+-.'); }); }, 0); }, 'scheme'); } scheme = ALPHA * ( ALPHA / DIGIT / "+" / "-" / "." ) ̍ ̍    
  9. private function scheme() { return (new Hexpress()) ->find(function ($hex) {

    $hex->matching(function ($hex) { $hex->letter(); }); $hex->many(function ($hex) { $hex->matching(function ($hex) { $hex->letter()->number()->with('+-.'); }); }, 0); }, 'scheme'); } scheme = ALPHA * ( ALPHA / DIGIT / "+" / "-" / "." ) pOEϝιουͷୈೋҾ਺ʹ αϒύλʔϯͷ໊લΛࢦఆͰ͖Δ