Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
まだ正規表現で消耗してるの? / PHP Conference Fukuoka 2016
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kenichiro Kishida
May 29, 2016
Technology
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
まだ正規表現で消耗してるの? / PHP Conference Fukuoka 2016
PHPカンファレンス福岡2016のLTスライドです
Kenichiro Kishida
May 29, 2016
More Decks by Kenichiro Kishida
See All by Kenichiro Kishida
Compression Streams API によるブラウザネイティブなデータ圧縮/jsfes2025
sizuhiko
0
85
Compression Streams API によるブラウザネイティブなデータ圧縮 /phpstudy-182
sizuhiko
0
88
Code兄弟での CI/CDをいい感じにする方法 / phpstudy-2024-06
sizuhiko
0
230
Webアクセシビリティワークショップを社内でやってみた / phpconfuk-2024
sizuhiko
1
430
デベロッパーよ 健康でいるためには 寝て 旅をして 趣味を持って メンタル大切に / DE-RADIO-2023-06-26
sizuhiko
0
210
ヘビータブユーザーが ワークスペースの利用でどのように変わったか / 2023-05-16 Vivaldi User Meetup TOKYO 2023
sizuhiko
0
390
Node.js v18 ベースイメージを使った AWS Lambda アプリ開発におけつ光と影 / 2023-04-23 JavaScript Fes
sizuhiko
0
260
@swc-node/jest を使って テストを高速化する/jsfes-2022
sizuhiko
0
430
Rails 7の採用提案で注目を集め始めた Import maps の過去、現在、そして未来について/de radio 2
sizuhiko
2
1.5k
Other Decks in Technology
See All in Technology
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
110
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
2
2.8k
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
4
2.6k
module Synths; end
asonas
1
130
Webとヘルスデータ
yukukotani
1
200
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
220
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
110
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
200
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
170
Tab5をRubyで動くパソコンにする
kishima
2
280
ASTを使って影響範囲を特定する
nealle
0
120
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
220
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
690
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Everyday Curiosity
cassininazir
0
310
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
How to Ace a Technical Interview
jacobian
281
24k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Transcript
· ͩ ਖ਼ ن ද ݱ Ͱ ফ ͠
ͯ Δ ͷ ʁ Մ ಡ ੑ Λ ্ ͛ Δ ͱ ͏ · ͘ ͍ ͘ ͠ ͣ ͻ ͜ 1)1ΧϯϑΝϨϯεԬ ෳࡶͳਖ਼نදݱΛߟ͑Δͷ࣌ؒͷແବͩͬͨ ౦ ژ
,FOJDIJSP,JTIJEB 5PLZP +"1"/ TJ[VIJLP!HNBJMDPN !TJ[VIJLP IUUQTHJUIVCDPNTJ[VIJLP IUUQCMPHPQFOUPLZPKQ R: HmM^JRTIeUY
I — ਖ਼نදݱ
/(?:(?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])+)+)))?$/
None
RFC5322 Internet Message Format Date and Time Specification
/^(?P<scheme>[a-zA-Z](?:[a-zA-Z0-9\+\-\.])*)\:(?P<hierPart>(?:\/\/(? P<authority>(?:(?P<userinfo>(?:(?:[a-zA-Z0-9\-\._~]|%(?:[0-9A-Z]){2}| [\!\$&'\(\)\*\+,;\=]|\:))*)@)?(?P<host>(?:(?:0-9|1-90-9|10-90-9|20-40-9| 250-5)\.(?:0-9|1-90-9|10-90-9|20-40-9|250-5)\.(?:0-9|1-90-9|10-90-9| 20-40-9|250-5)\.(?:0-9|1-90-9|10-90-9|20-40-9|250-5)|(?:(?:[a-zA- Z0-9\-\._~]|%(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\+,;\=]))+))(?:\:(?P<port>(?:\d) +))?)(?P<pathAbempty>(?:\/(?:(?:[a-zA-Z0-9\-\._~]|%(?:[0-9A-Z]){2}|[\! \$&'\(\)\*\+,;\=]|\:|@))*)*)|(?P<pathAbsolute>\/(?:(?:(?:[a-zA-Z0-9\- \._~]|%(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\+,;\=]|\:|@))+(?:\/(?:(?:[a-zA-Z0-9\- \._~]|%(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\+,;\=]|\:|@))*)+)?)|(?
P<pathRootless>(?:(?:[a-zA-Z0-9\-\._~]|%(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\ +,;\=]|\:|@))+(?:\/(?:(?:[a-zA-Z0-9\-\._~]|%(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\ +,;\=]|\:|@))*)*)|(?P<pathEmpty>^(?:[a-zA-Z0-9\-\._~]|%(?:[0-9A-Z]) {2}|[\!\$&'\(\)\*\+,;\=]|\:|@))))(?:\?(?P<query>(?:(?:(?:[a-zA-Z0-9\-\._~]| %(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\+,;\=]|\:|@)|\/|\?))*))?(?:#(?P<fragment>(?: (?:(?:[a-zA-Z0-9\-\._~]|%(?:[0-9A-Z]){2}|[\!\$&'\(\)\*\+,;\=]|\:|@)|\/| \?))*))?$/
RFC3986 Uniform Resource Identifier (URI): Generic Syntax
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
wݕࡧͨ݁͠Ռɺग़͖ͯͨਖ਼نදݱΛί ϐϖͯ͠·ͤΜ͔ʁͦΕਖ਼͍͠Ͱ͔͢ʁ wଞͷਓ͕ॻ͍ͨਖ਼نදݱΛؚΉίʔυ ΛϨϏϡʔͰ͖·͔͢ʁ wޙͰͦͷਖ਼نදݱϝϯςͰ͖·͔͢ʁ
ͬͱ؆୯ʹ ॻ͖͍ͨPSಡΈ͍ͨ ͱࢥͬͨ͜ͱͳ͍Ͱ͔͢ʁ
None
Regular Expressions made easy
$regex = new VerbalExpressions; $regex->startOfLine() ->then("http") ->maybe("s") ->then("://") ->maybe("www.") ->anythingBut("
") ->endOfLine(); /^(?:http)(?:s)?(?:\:\/\/)(?:www\.)?(?:[^ ]*)$/m
$rfc3986 = new VerbalExpressions; // scheme $scheme = new VerbalExpressions;
$scheme->add("http")->maybe("s") ->_or("ftp"); $rfc3986->startOfLine() ->add($scheme) ->add("://"); /^(?:\(\?\:http\)\(\?\:s\)\?\)\|\(\?\:ftp)(?:\:\/\/)/m
w⾭ଟ͘ͷݴޠʹରԠ͍ͯ͠Δ w⾭؆୯ʹॻ͚Δ w⾪ෳࡶͳέʔεॻ͚ͳ͍ w⾪ݴޠʹΑ࣮͕ͬͯϚνϚν
None
None
None
http://www.kurtisrainboltgreene.name/hexpress/
The hexpress gem is another take at the concept of
"Verbal Hexpressions" in Ruby.
pattern = Hexpress.new. start("http"). maybe("s"). with("://"). maybe { words.with(".") }.
find { matching { [word, "-"] }.multiple }. has("."). either("com", "org"). maybe("/"). ending
ϫλγϋϧϏʔνϣοτ
To PHP https://github.com/sizuhiko/hexpress
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ͳΒ͔ͳΓ࣮ʹҠ২Մೳ
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
$this->hexpress ->start($this->scheme()) ->with(':') ->has($this->hierPart()) ->maybe($this->query()) ->maybe($this->fragment()) ->end(); URI = scheme
":" hier-part [ "?" query ] [ "#" fragment ]
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 / "+" / "-" / "." ) ̍ ̍
1)1൛ͷಠࣗػೳ ໊લ͖αϒύλʔϯ
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ϝιουͷୈೋҾʹ αϒύλʔϯͷ໊લΛࢦఆͰ͖Δ
preg_match( 'http://example.com:80/', $pattern->toRegExp(), $matches); echo $matches['scheme']; #=> 'http'
w͏ਖ਼نදݱͳΜ͔Ͱফ͠ͳ͍ʂ w3VCZͷΤίγεςϜ͔ΒͷҠ২༰қ ʹͳ͍ͬͯΔʂʂ wఘΊͳ͍Ͱʂʂʂ
WJTJUNZCMPHHJUIVC https://github.com/sizuhiko http://blog.open.tokyo.jp R: HmM^JRTIeUY @sizuhiko #phpstudy 2016/3/30