Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[正規表現]メタ文字をはじめから丁寧に
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ken3ypa
October 27, 2018
340
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[正規表現]メタ文字をはじめから丁寧に
Tama.rb 2018/10/27(土)発表
ken3ypa
October 27, 2018
More Decks by ken3ypa
See All by ken3ypa
[Tama.rb年忘れLT会]レールに乗ったCSSコーディング
ken3ypa
1
830
[Rails Girls Tokyo 13th]株式会社万葉 スポンサーLT
ken3ypa
0
840
[tamarubykaigi01]こわくないDSL
ken3ypa
5
3.3k
[tama.rb#13]Hash#to_procについて
ken3ypa
0
110
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.5k
Utilizing Notion as your number one productivity tool
mfonobong
4
310
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Marketing to machines
jonoalderson
1
5.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Leo the Paperboy
mayatellez
7
1.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
Transcript
ϝλจࣈΛ͡Ί͔Βஸೡʹ ͚Μ(@alyoalyoalyo) 201810݄27() Tama.rb νΣϦʔຊྠಡձ
ਖ਼نදݱɺ֮͑ͯ·͔͢ʁ ͋Δͷձ
Θ͔ͬͯεοΩϦ͔ΒͷΕͯαούϦ
ඪͱ͢Δͱ͜Ζ • ਖ਼نදݱɺάάΔճΛݮΒ͍ͨ͠ • ɹຖճ͍͔ͪΒάάΔͷେม • ɹ͔ͱ͍ͬͯશ෦͙֮͑͢ΒΕͳ͍ • ɹ࠷ݶ֮͑Δͱ͜Ζ͚͍֮ͩ͑ͨ
࠷ݶʝ [\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x 80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\ \x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000 -\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\ \\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\04 0\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\ xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80 -\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\0 15()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\x
ff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t] *)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" .\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xf f][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*( ?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\ \x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[ \040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x8 0-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\ x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\03 7\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\ \\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\x
ͦ͏ɺϝλจࣈ
ϝλจࣈͬͯʁ • ͦͷจࣈຊདྷͷҙຯͰͳ͘ɺϓϩάϥϜͰಛผͳҙ ຯΛ࣋ͨͤͨจࣈͷ͜ͱ • (ྫɿʮ+ʯͱϝλจࣈʮ+ʯผͷҙຯΛ࣋ͭ) • ༁͢Δͱจࣈɹ • ਖ਼نදݱΛࢧ͑Δɺॏཁͳٕज़
• ͦΜͳʹݸଟ͘ͳ͍(͚Ͳ͙͢ΕΔ) • ͱ͍͏͔͜Εԡ͑͞ͳ͍ͱ͕࢝·Βͳ͍
ͱ͍͏͜ͱͰ ࠷ݶ͓͖͍֮͑ͯͨ ϝλจࣈΛ͝հ
ͰΜʂʂ
·ͣࠓճ֮͑Δ͖ͷΛશͯோΊΔ /P ϝλจࣈ ?
\^ c <> a
ଟ͘Ͷ ( ^ω^;)
͋ͱ͜ͷه߸ͳΜͯಡΉΜͩΑ ^ ←͜Εͱ͔ []{}() ͜Εͱ͔͘͢͝ฆΒΘ͍͠
ͷͰ
άϧʔϐϯάԽͯ͠ ݸผʹղઆͯ͠Έͨ
3ͭͷάϧʔϓ
ࡾͭͷάϧʔϓ • (1)1จࣈϚον • (2)܁Γฦ͠ • (3)άϧʔϐϯά͢Δͷ ɹɹɹɹɹɹɹɹɹɹɹɹͷࡾͭͰ͝հ͠·͢
(1) 1จࣈϚον
ҰͭͷจࣈྻΛѻ͏ ϝλจࣈ ػೳ ? ߦͷઌ಄ͷҐஔʹ Ϛον ߦͷඌͷҐஔʹ Ϛον
લͷจࣈʹϚον
ߦ಄Ϛον ߲ આ໌ ه߸ ? ಡΈํ ΩϟϨοτɺϋοτ ػೳ ߦͷઌ಄ͷҐஔʹ Ϛον
༻ྫ IUUQSVCVMBSDPNS 4-"MK[RS#
ߦ಄Ϛον • จষͷઌ಄ͷҐஔʹϚον • ٯʹݴ͑ઌ಄ʹͳ͍ͱϚον͠ͳ͍
ߦϚον ߲ આ໌ ه߸ ಡΈํ υϧɾυϧϚʔΫ ػೳ ߦͷඌͷҐஔʹ Ϛον
༻ྫ IUUQSVCVMBSDPNS J%*FS.
ߦϚον • ߦͷඌͷҐஔʹϚον • ٯʹݴ͑ඌʹͳ͍ͱϚον͠ͳ͍ • ͭ·Γ͖ͬ͞ͷٯ
ͳΜͰϚον ߲ આ໌ ه߸ ɾ ಡΈํ ϐϦΦυɺυοτ ػೳ લͷจࣈʹϚον ༻ྫ
IUUQSVCVMBSDPNS Z1F3KXOZ(
ͳΜͰϚον • ҙͷ1จࣈʹϚονͤ͞Δ͜ͱ͕Ͱ͖Δ • ϙʔΧʔେ߽ʹ͓͚ΔδϣʔΧʔʹ͍ۙ
(2)܁Γฦ͠
܁Γฦ͠ ϝλจࣈ Ϛον͢Δέʔε લͷจࣈύλʔϯ͕ ճҎ্࿈ଓ͢Δ લͷจࣈύλʔϯ͕ ճҎ্࿈ଓ͢Δ લͷจࣈύλʔϯ͕ ճ͘͠ճҎ্࿈ଓ͢Δ \O^
લͷจࣈύλʔϯ͕ OճҎ্࿈ଓ͢Δ
܁Γฦͬͯ͠ʁ • ܁Γฦ͠ͷྔΛࢦఆ͠ɺ֘͢ΔͷͱϚονϯά • ʮྔࢦఆࢠʯͱݺΕΔ • ӳޠͰ͍͏ͱgeneral repetition quantifier(൚༻ͷ ܁Γ
ฦ͠ͷྔΛද͢Ҽࢠ)
* ߲ આ໌ ه߸ ಡΈํ ΞελϦεΫ ػೳ લͷจࣈύλʔϯ͕ճҎ্ ࿈ଓ͢ΔͷʹϚον ༻ྫ
IUUQSVCVMBSDPNS OI94/-GV.
* • 0ճҎ্Ϛονͬͯʁ • લͷҰจࣈলུՄೳɺͱ͍͏ҙຯ • ਤதͦΕͧΕ0ճɾ1ճɾ2ճɾ3ճϚον
? ߲ આ໌ ه߸ ಡΈํ ΫΤενϣϯϚʔΫ ػೳ લͷจࣈύλʔϯ͕ճ ·ͨճ࿈ଓ͢ΔͷʹϚον ༻ྫ
IUUQSVCVMBSDPNS %G"WW+[
? • 0ճ·ͨ1ճ • 2ճҎ্࿈ଓ͢ΔͷʹϚον͍ͯ͠ͳ͍
+ ߲ આ໌ ه߸ ಡΈํ ϓϥε ػೳ લͷจࣈύλʔϯ͕ճҎ্ ࿈ଓ͢ΔͷʹϚον ༻ྫ
IUUQSVCVMBSDPNS S--(7L7
+ • 1ճҎ্ͳͷͰલจࣈলུͰ͖ͳ͍ • *ͱ?ͱͷҧ͍Λҙࣝ͢͠
ؓٳ +ͱ͔*ͱ͔ʁͱ͔ɺ৭ʑ͋ΔͷΘ͔ͬͨΜͰ͚͢Ͳ ػೳ͕ࣅ͍֮ͯͯ͑ʹ͍͘ΜͰ͕͢ʝ
ؓٳ ( ʈωʈ) ͜͜ʹJISྻͷ ɹɹɹΩʔϘʔυ͕ ɹɹɹ͋Δ͡ΌΖʁ
ؓٳ ( ʈωʈ) ࣮͜͏͡Ό
None
{n} ߲ આ໌ ه߸ \O^ ಡΈํ ϒϨʔε ׅހɺதׅހ ػೳ લͷจࣈάϧʔϓͷ
OճҎ্ͷ܁Γฦ͠ʹϚον ༻ྫ IUUQSVCVMBSDPNS U[U,L+C
{n} • {}ʹࢦఆͨ͠ͷจࣈʹϚον͢Δ • a{2}ͳΒa͕2ճ࿈ଓ͍ͯ͠ΔͷʹϚον
{n}ͷछྨ ճͷߜΓࠐΈ͕Ͱ͖ΔͷͰɺޮత͔ͭ҆৺ײ͕͋Δ ߲ \O^ \O ^ \ O^ \O N^
ػೳ લͷจࣈΛ Oճ OճҎ্ OճҎԼ OճҎ্NճҎ Լ
·ͱΊ ճ ه߸ ҙຯ ճҎ্ͷ܁Γฦ͠ʹ Ϛον d ճҎ্ͷ܁Γฦ͠ʹ Ϛον
PS ճ·ͨճͷ܁Γ ฦ͠ʹϚον ࢦఆճ \O^ Oճͷ܁Γฦ͠ʹ Ϛον ࢦఆճҎ্ \O ^ OճҎ্ͷ܁Γฦ͠ʹ Ϛον ࢦఆճҎ্ɺࢦఆճ ҎԼ \O N^ OճҎ্NճҎԼͷ ܁Γฦ͠ʹϚον
(3)ෳจࣈΛѻ͏ͷ
ෳͷจࣈྻΛѻ͏ ϝλจࣈ ػೳ c cͰ۠ΒΕͨ ͍ͣΕ͔ͷจࣈྻʹϚον ਖ਼نදݱͷάϧʔϓԽ <> จࣈΫϥεͷ࡞
a จࣈΫϥεͷলུه๏ όοΫεϥογϡه๏
| ߲ આ໌ ه߸ c ಡΈํ όʔςΟΧϧόʔ ػೳ cͰ۠ΒΕͨจࣈྻͷ͍ͣΕ͔ͷ จࣈྻʹϚον
༻ྫ IUUQSVCVMBSDPNS WB/F'NH
| • |Ͱ۠ΒΕͨจࣈΛϚονͰ͖Δ • orͱಡΈସ͍͍͑ͯ • A | B ͳΒAͱBʹϚον
[ ] ߲ આ໌ ه߸ <> ಡΈํ େ͔ͬ͜ɺϒϥέοτ ػೳ Χοίͷ͍ͣΕ͔ͷจࣈ
༻ྫ IUUQSVCVMBSDPNSJDR2[UQJ"
[ ] • []ͷจࣈɺҰͭͷ·ͱ·ͬͨจࣈྻͰͳ͘ݸʑͷจࣈͱͯ͠ѻΘΕΔ • ͳͷͰԼهͷྫͩͱʮஉʯʮੑʯʮ͞ʯʮΜʯ͕ݸผʹϚον͢Δ
[ ]ੜɿ^Λ͚ͭΔͱ൱ఆͷҙຯ ߲ આ໌ ه߸ <?> ಡΈํ ൱ఆ͖େ͔ͬ͜ɺϒϥέοτ ػೳ Χοίͷ͍ͣΕ͔ͷ
จࣈҎ֎ͷͷ ༻ྫ IUUQSVCVMBSDPNS J',4(3QBJO
[]ͷলུه๏ • []ͷจࣈҎ֎ͷͷ͕Ϛον͢Δ • ͳͷͰԼهͷྫͩͱʮஉʯʮੑʯʮ͞ʯʮΜʯҎ֎ͷͷ͕Ϛον͢Δ
( ) ߲ આ໌ ه߸ ಡΈํ ؙ͔ͬ͜ɺύʔϨϯ ػೳ άϧʔϓΛ࡞Δ
༻ྫ ߲࣍
( ) • []ͱҧ͍άϧʔϓͱͯ͠ѻ͏ͷͰॱং͕อͨΕΔ • ্هͷಛੑ͔Β | ͱ૬ੑ͕ྑ͍
\ ߲ આ໌ ه߸ a ಡΈํ όοΫεϥογϡ ػೳ ɾϝλจࣈΛΤεέʔϓ͢Δ ɾa
ಛఆͷӳࣈͰจࣈͷলུه๏Λ࡞Δ ༻ྫ IUUQSVCVMBSDPNSJDR2[UQJ"
Τεέʔϓͬͯʁ • ਖ਼نදݱதͩͱɺ͋Δछͷه߸ϝλจࣈͱͯ͠ೝࣝ͞Εͯ͠·͏ • ϝλจࣈͱͯ͠ͷҙຯΛଧͪফ͢͜ͱΛΤεέʔϓͱ͍͏
จࣈͷলུه๏ লུه๏ આ໌ লུݩ උߟ aX ӳࣈ <B[";@> XPSE a8
ඇӳࣈ <?B[";@> 803% aT ۭനจࣈ <aUaSaOaGaW> TQBDF a4 ඇۭനจࣈ <?aUaSaOaGaW> 41"$& aE ਐࣈ <> EJHJU a% ඇਐࣈ <?> %*(*5 aI ਐࣈ <BG"'> IFYBEFDJNBM OVNCFS a) ඇਐࣈ <?BG"'> )&9"%&$*."- /6.#&3 Մಡੑ͕͕͋ΔͷͰͥͻ͍͖ͬͯ·͠ΐ͏
লུه๏ɺ৭ʑ͋Δ͚Ͳ4छྨ • େจࣈͩͱʮҎ֎ʯʹͳΔΑ • ӳࣈ͔ ۭനจࣈ͔(w ͱ s) • 10ਐ͔
16ਐ͔(d ͱ h )
࠶ܝ ࠷ॳʹோΊͨ࣌ͱൺΔͱɺͪΐͬͱΘ͔ΔΑ͏ʹͳͬͯ·ͤΜ͔ʁ /P ϝλจࣈ ?
\^ c <> a
͔֮ͤͬ͑ͨ͘Μ͔ͩΒ ͳΜ͔Ϳͬ͜͵͍ͯΈ͍ͨ
grep • grepͯ͠ΈΔ • StringΫϥε͕࣋ͬͯΔΠϯελϯεϝιουͱ͔
match • ࠓ࡞ۀ͠ͳ͕Βௌ͍ͯΔYoutubeͷύϥϝʔλͱ͔
gsub • ൵͍͠աڈΛٹࡁͯ͋͛͠Δͱ͔ʝ
ਖ਼نදݱɺศརͰ͢Ͷʂ ৭ʑ͍͖ͬͯ·͠ΐ͏ʂʂ