90ç§ã§ãããæ£èŠè¡šçŸ
æ£èŠè¡šçŸã¯ããã¹ããã¿ãŒã³ãèšè¿°ããããã®ããèšèªã§ãããã¿ãŒã³ \d{3}-\d{4} 㯠"555-1234" ã®ãããªé»è©±çªå·ã«ãããããã¿ãŒã³ ^From:.+$ 㯠"From:" ã§å§ãŸãã¡ãŒã«ããããŒè¡ã«ããããã·ã³ãã«ãªã³ã³ã»ããã ããæ§æã¯ããã«å¯ã«ãªãã
JavaScriptã¯ECMAScriptæ£èŠè¡šçŸãã¬ãŒããŒïŒECMA-262ã§å®çŸ©ïŒã䜿çšãä»ã®ãã¬ãŒããŒãšã®äž»ãªéãïŒå€ããšã³ãžã³ã§ã¯ã«ãã¯ããã€ã³ããªãïŒES2018ã§è¿œå ïŒãææéååãªããã¢ãããã¯ã°ã«ãŒããªããPythonãPCREããæ£èŠè¡šçŸãç§»æ€ããå Žåã¯ãããã®ã®ã£ããã«æ³šæã
æãããèŠããããã¹ïŒ. ãããã©ã«ãã§æ¹è¡ã«ãããããªãããšãå¿ããããšããã¹ãæååã«æ¹è¡ãããããã¿ãŒã³ã« .* ã䜿ã£ãŠãããšãäºæããªãéšåããããçºçãããsãã©ã°ïŒdotAllïŒã远å ãããã代ããã« [\s\S]* ã䜿çšã
ããã©ãŒãã³ã¹ã®çœ ïŒ(a+)+ ã (.*a){20} ã®ãããªãã¹ããããéååã¯å£æ» çããã¯ãã©ããã³ã°ãåŒãèµ·ããå¯èœæ§ãããããšã³ãžã³ãææ°çã«å€ãã®ãã¹ã詊è¡ã30æåã®å ¥åã§ãã©ãŠã¶ãæ°åéãã³ã°ããããã®ããŒã«ã¯ãã©ãŠã¶ã§å®è¡ãããã®ã§ãæªããã¿ãŒã³ã¯ãã®ã¿ãã ããããªãŒãºãããæ¬çªãµãŒããŒã«ã¯åœ±é¿ããªãããŸãããã§ãã¹ãã
äœ¿ãæ¹
- 1æ£èŠè¡šçŸãã¿ãŒã³ãå ¥åãããªãã¿äžèŠïŒãã¿ãŒã³ã ãã/pattern/ ã§ã¯ãªãïŒã
- 2ãã©ã°ãèšå®ïŒgïŒå šãããïŒãiïŒå€§æåå°æåç¡èŠïŒãmïŒè€æ°è¡ïŒãsïŒããããæ¹è¡ã«ãããïŒã
- 3ãã¹ãæååã貌ãä»ãããããããªã¢ã«ã¿ã€ã ã§ãã€ã©ã€ãã
- 4äžã®ãã£ããã£ã°ã«ãŒãã確èªãå () ã°ã«ãŒãã®ãããå 容ãåå¥ã«è¡šç€ºã
䜿çšå Žé¢
ãŠãŒã¶ãŒå ¥åãã©ãŒãããã®æ€èšŒ
ã¡ãŒã«ãé»è©±çªå·ãéµäŸ¿çªå·ãã¯ã¬ãžããã«ãŒãããã¹ãŠã«ãã¿ãŒã³ããããããªããŒã·ã§ã³ã³ãŒãã«å ¥ããåã«ããã§æ£èŠè¡šçŸãæ§ç¯ããŠãã¹ãã
ãã°ãã¡ã€ã«ããã®ããŒã¿æœåº
ãµãŒããŒãã°ãCSVãã¡ã€ã«ãAPIã¬ã¹ãã³ã¹ãªã©ãéæ§é åããã¹ãããã¿ã€ã ã¹ã¿ã³ããIPããšã©ãŒã³ãŒããåãåºãå¿ èŠãããæããã£ããã£ã°ã«ãŒãã§ãã¿ãŒã³ãæ§ç¯ãããµã³ãã«ãã°è¡ã§ãã¹ãããŠã¹ã¯ãªããã§äœ¿çšã
ã³ãŒããšãã£ã¿ã§ã®æ€çŽ¢ãšçœ®æ
VS CodeãIntelliJãSublimeãªã©ããã¹ãŠæ£èŠè¡šçŸã«ããæ€çŽ¢çœ®æããµããŒããããã§ãã¹ãã±ãŒã¹ãšãšãã«ãã¿ãŒã³ãæ§ç¯ãããšãã£ã¿ã«è²Œãä»ãããªãã¡ã¯ã¿ãªã³ã°ã«ç¹ã«äŸ¿å©ã
ãåãã¯ããªã®ã«åããªããæ£èŠè¡šçŸã®ãããã°
ãã¿ãŒã³ãæžããããããå ¥åã§ã¯åããä»ã§ã¯å€±æããã倱æããå ¥åãããã«è²Œãä»ããŠãããããã©ãã§éåãããæ£ç¢ºã«ç¢ºèªã倧æµã¯ãšã¹ã±ãŒãæŒãïŒ\. vs .ïŒã貪欲 vs æ æ°éååïŒ.* vs .*?ïŒããŸãã¯ãã©ã°äžè¶³ã
ããããèœãšã穎
ç¹æ®æåããšã¹ã±ãŒããã
æ£èŠè¡šçŸã§ã¯ . * + ? ^ $ { } [ ] ( ) | \ ãã¹ãŠã«ç¹å¥ãªæå³ãããããªãã©ã«ã®ãããã«ããããããã«ã¯ \. ã䜿ãããã ã®ãããã§ã¯ãªãã
貪欲 vs æ æ°ïŒ.* vs .*?
.* ã¯ã§ããã ãå€ãååŸïŒè²ªæ¬²ïŒã.*? ã¯ã§ããã ãå°ãªãååŸïŒæ æ°ïŒãè¿·ã£ãã .*? ã§æ æ°ã«ããŠå ·äœæ§ã远å ã
ã¢ã³ã«ãŒãéèŠïŒ^ ãš $ ãšè€æ°è¡ãã©ã°
mãã©ã°ãªãã§ã¯ ^ ã¯æååå šäœã®å é ã®ã¿ã$ ã¯æ«å°Ÿã®ã¿ã«ããããmãã©ã°ããã§ã¯åè¡ã®å é /æ«å°Ÿã«ããããè€æ°è¡ããã¹ããåŠçããŠããŠãã¿ãŒã³ã« ^ ã䜿ã£ãŠãããªãããããã m ãã©ã°ãå¿ èŠã
壿» çããã¯ãã©ããã³ã°ãé¿ãã
(a+)+ ã (x+x+)+y ã®ãããªãã¿ãŒã³ã¯ãããããªãå ¥åã§ææ°çæéããããå¯èœæ§ããããéè€ããæåã¯ã©ã¹ã§éååããã¹ãããªãããšã
äŸ
æ¥ä»ã³ã³ããŒãã³ãã®æœåº
çªå·ä»ãã°ã«ãŒãã§ISOæ¥ä»ãã©ãŒããããã幎ãæãæ¥ããã£ããã£ã
Input
(\d{4})-(\d{2})-(\d{2})Output
å
¥å "2024-03-15" â ã°ã«ãŒã1: "2024", ã°ã«ãŒã2: "03", ã°ã«ãŒã3: "15"ã¡ãŒã«ãã¿ãŒã³ã®ããã
ç°¡ç¥åãããã¡ãŒã«ãã¿ãŒã³ïŒRFC 5322æºæ ã§ã¯ãªãããæãããªéã¡ãŒã«ãæ€åºïŒã
Input
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}Output
"user@example.com"ã"first.last+tag@sub.domain.org" ã«ãããæ©èœ
- ãªã¢ã«ã¿ã€ã ãããã³ã°ãå ¥åäžã«çµææŽæ°ãéä¿¡ãã¿ã³äžèŠ
- ãã¹ãŠã®JavaScriptãã©ã°ïŒgãiãmãsãuãvãy
- çªå·ä»ããã£ããã£ã°ã«ãŒã衚瀺
- 説æçã¡ãã»ãŒãžä»ãæ§æãšã©ãŒãã€ã©ã€ã
- ãããæ°ãšäœçœ®ã€ã³ãžã±ãŒã¿ãŒ
- 100%ãã©ãŠã¶å ã§åäœãããŒã¿ã¯ã©ãã«ãéä¿¡ãããªã
ãããã質å
ãªãPythonã§åãæ£èŠè¡šçŸãããã§ã¯åããªãïŒ
æ£èŠè¡šçŸãã¬ãŒããŒãç°ãªããPythonã¯PCREé¢šæ§æã§JavaScriptã«ãªãæ©èœãæã€ïŒã«ãã¯ããã€ã³ãïŒES2018ã§è¿œå ãå€ããã©ãŠã¶é察å¿ïŒãã¢ãããã¯ã°ã«ãŒããææéååïŒa++ïŒãåé·ã¢ãŒãïŒxãã©ã°ïŒãæãäžè¬çãªåé¡ïŒPythonã®re.DOTALLã¯JavaScriptã®sãã©ã°ã«çžåœã
è€æ°è¡ã«ãŸããã£ãŠãããããã«ã¯ïŒ
2ã€ã®éžæè¢ïŒ(1) sãã©ã°ã远å ãããš . ãæ¹è¡æåã«ãããããããã«ãªãã(2) . ã®ä»£ããã« [\s\S] ã䜿ãã°ãsãã©ã°ãªãã§æ¹è¡ãå«ãä»»æã®æåã«ããããè¡ããšã«ãããããã«ã¯mãã©ã°ã§ ^ ãš $ ãè¡å¢çã«ããããããã
(?: ) ãš ( ) ã®éãã¯ïŒ
( ) ã¯ãã£ããã£ã°ã«ãŒãã§ããããããããã¹ããåŸã§äœ¿ãããã«ãã£ããã£ïŒåŸæ¹åç §ãæœåºïŒã(?: ) ã¯éãã£ããã£ã°ã«ãŒãã§ãéååãéžæã®ããã«ã°ã«ãŒãåããããã£ããã£ããªãããã£ããã£å€ãäžèŠãªæã« (?: ) ã䜿ããå°ãéããã°ã«ãŒãçªå·ãæŽçãããã
ãªãæ£èŠè¡šçŸã§ããŒãžãããªãŒãºããïŒ
壿» çããã¯ãã©ããã³ã°ãéè€ããæåã«ãã¹ãããéååãæã€ãã¿ãŒã³ïŒ(a*)*b ã (.+)+$ ãªã©ïŒã¯ãããããªãå ¥åã§ææ°çæéããããããšã³ãžã³ã諊ããåã«ãã¹ãŠã®å¯èœãªçµã¿åããã詊è¡ãããä¿®æ£ïŒéååãããå ·äœçã«ããããåãæåã§ã®éååãã¹ããé¿ããããåæ§ç¯ã
ç¹æ®æåããªãã©ã«ã§ãããããã«ã¯ïŒ
ããã¯ã¹ã©ãã·ã¥ã§ãšã¹ã±ãŒãïŒ\. ã§ãããã\* ã§ã¢ã¹ã¿ãªã¹ã¯ã\( ã§æ¬åŒ§ã\\ ã§ããã¯ã¹ã©ãã·ã¥èªäœãæåã¯ã©ã¹ [ ] å ã§ã¯ã»ãšãã©ã®ç¹æ®æåã¯æå³ã倱ãïŒ] \ ^ - ãé€ãïŒãè¿·ã£ãããšã¹ã±ãŒããäžèŠãªãšã¹ã±ãŒãã¯ç¡å®³ãæŒãããšã¹ã±ãŒãã¯ãã°ã
ãã³ããšé¢é£ã¯ãŒã¯ãããŒ
- JSONããŒã¿ã«å¯ŸããŠæ£èŠè¡šçŸããã¹ããããªãããŸãæŽåœ¢ããŠãããšäŸ¿å©ã§ããJSONãã©ãŒããã¿ãŒ.
- ãããããããã¹ãã®ããã·ã¥æ€èšŒãå¿ èŠã§ããïŒããã·ã¥çæããŒã«.
- æ£èŠè¡šçŸã§ãããããURLãå®å šã«ãšã³ã³ãŒãããããšããURLãšã³ã³ãŒããŒ.
- Base64ãšã³ã³ãŒããããæååããã³ãŒãããŠäžèº«ã確èªã§ããŸããBase64ãšã³ã³ãŒããŒ.