ããã«ã¡ã¯ãHabrã
ç§ã®ååã¯Vitaliy Kotovã§ãæ£èŠè¡šçŸã«ã€ããŠå°ãç¥ã£ãŠããŸãã ã«ããã®äžã§ããããã䜿çšããåºæ¬ã説æããŸãã å€ãã®çè«çãªèšäºããã®äž»é¡ã«ã€ããŠæžãããŠããŸãã ãã®èšäºã§ã¯ãäŸã®æ°ã«æ³šç®ããããšã«ããŸããã ç§ã¯ãããããã®ããŒã«ã®æ©èœã瀺ãæè¯ã®æ¹æ³ã§ããããã«æããŸãã
ãããã®ããã€ãã¯ãPHPãŸãã¯JavaScriptã®ããã°ã©ãã³ã°èšèªã®äŸã«ãã£ãŠèª¬æç®çã§ç€ºãããŸãããäžè¬çã«ã¯ãé¢å¿ã®ããèšèªã«é¢ä¿ãªãæ©èœããŸãã
ã¿ã€ãã«ããããã®èšäºãæãåºæ¬çãªã¬ãã«ã察象ãšããŠããããšã¯æããã§ããã€ãŸããããã°ã©ã ã§æ£èŠè¡šçŸã䜿çšããããšããªãããé©åã«ç解ããã«äœ¿çšãã人ã§ãã
èšäºã®æåŸã§ãæ£èŠè¡šçŸã§ã¯è§£æ±ºã§ããªãã¿ã¹ã¯ãšãããã«äœ¿çšããããŒã«ã«ã€ããŠç°¡åã«èª¬æããŸãã
è¡ããïŒ

ãšã³ããªãŒ
æ£èŠè¡šçŸ -ããã¹ãå
ã®éšåæååãŸãã¯éšåæååãæ€çŽ¢ããèšèªã æ€çŽ¢ã«ã¯ãæåãšã¡ã¿ãã£ã©ã¯ã¿ãŒïŒããèªäœã§ã¯ãªããæåã®ã»ããã瀺ãæåïŒã§æ§æããããã¿ãŒã³ïŒãã³ãã¬ãŒãããã¹ã¯ïŒã䜿çšãããŸãã
ããã¯ãæ€çŽ¢ãæååæ€èšŒãªã©ãå€ãã®å Žåã«åœ¹ç«ã€ããªã匷åãªããŒã«ã§ãã ãã®æ©èœã®ç¯å²ã1ã€ã®èšäºã«åããããšã¯å°é£ã§ãã
PHPã§ã¯ãæ£èŠè¡šçŸã®æäœã¯äžé£ã®é¢æ°ã§ããããã®äžã§æããã䜿çšãããã®ã¯æ¬¡ã®é¢æ°ã§ãã
ãããã䜿çšããã«ã¯ãéšåæååãæ€çŽ¢ãŸãã¯çœ®æããããã¹ããšãæ€çŽ¢ã«ãŒã«ã説æããæ£èŠè¡šçŸèªäœãå¿
èŠã§ãã
äžèŽé¢æ°ã¯ãèŠã€ãã£ãéšåæååã®æ°ãè¿ããŸãããšã©ãŒã®å Žåã¯falseãè¿ããŸãã replaceé¢æ°ã¯ãå€æŽãããæåå/é
åããŸãã¯ãšã©ãŒã®å Žåã¯nullãè¿ããŸãã çµæã¯ããŒã«å€ã«éå
ããïŒå€ãèŠã€ãããªãã£ãå Žåã¯falseãå€ãèŠã€ãã£ãå Žåã¯trueïŒãifãŸãã¯assertTrueãšçµã¿åãããŠçµæãåŠçã§ããŸãã
JSã§ã¯ãã»ãšãã©ã®å Žåã以äžã䜿çšããå¿
èŠããããŸãã
https://regex101.com/ã§ãã¹ãŠã®äŸã
åç
§ããããšããå§ãã
ãŸã ã ããã¯ãæ£èŠè¡šçŸãæäœããããã®äŸ¿å©ã§çŽæçãªã€ã³ã¿ãŒãã§ã€ã¹ã§ãã
æ©èœäŸ
PHPã§ã¯ãæ£èŠè¡šçŸã¯åºåãæåã§å§ãŸããåºåãæåã§çµããæååã§ãã åºåãèšå·ã®éã«ãããã®ã¯ãã¹ãŠæ£èŠè¡šçŸã§ãã
äžè¬çã«äœ¿çšãããåºåãæåã¯ãã¹ã©ãã·ã¥ã/ãããã³ãèšå·ãïŒããããã³ãã«ããããã§ãã 以äžã¯ãæå¹ãªåºåãæåã䜿çšãããã¿ãŒã³ã®äŸã§ãã
- / foo bar /
- ïŒ^ [^ 0-9] $ïŒ
- ïŒ
[a-zA-Z0-9 _-]ïŒ
ãã³ãã¬ãŒãå
ã§ã»ãã¬ãŒã¿ã䜿çšããå¿
èŠãããå Žåã¯ãããã¯ã¹ã©ãã·ã¥ã§ãšã¹ã±ãŒãããå¿
èŠããããŸãã èªã¿ãããããããã«ããã³ãã¬ãŒãã§åºåãæåããã䜿çšãããå Žåã¯ããã®ãã³ãã¬ãŒãã«å¥ã®åºåãæåãéžæããããšããå§ãããŸãã
- / httpïŒ\ / \ //
- #httpïŒ//ïŒ
JavaScriptã§ã¯ãæ£èŠè¡šçŸã¯å¥åã®RegExpãªããžã§ã¯ããšããŠå®è£
ãããæååã¡ãœããã«çµ±åãããŸãã
次ã®ãããªæ£èŠè¡šçŸãäœæã§ããŸãã
let regexp = new RegExp("", "");
ãŸãã¯ãããçããªãã·ã§ã³ïŒ
let regexp = //;
let regexp = //gmi;
æ€çŽ¢ããæãåçŽãªæ£èŠè¡šçŸã®äŸïŒ
RegExp: /o/ Text: hello world
ãã®äŸã§ã¯ããã¹ãŠã®æåãoããæ¢ããŠããŸãã
PHPã§ã¯ãpreg_matchãšpreg_match_allã®éãã¯ãæåã®é¢æ°ãæåã®äžèŽãæ€åºããŠæ€çŽ¢ãçµäºããã®ã«å¯ŸããŠã2çªç®ã®é¢æ°ã¯ãã¹ãŠã®åºçŸãè¿ãããšã§ãã
PHPã³ãŒãäŸïŒ
<?php $text = 'hello world'; $regexp = '/o/'; $result = preg_match($regexp, $text, $match); var_dump( $result, $match );
int(1)
2çªç®ã®é¢æ°ã«ã€ããŠãåãããšãè©Šã¿ãŸãã
<?php $text = 'hello world'; $regexp = '/o/'; $result = preg_match_all($regexp, $text, $match); var_dump( $result, $match );
int(2) array(1) { [0]=> array(2) { [0]=> string(1) "o" [1]=> string(1) "o" } }
åŸè
ã®å Žåãé¢æ°ã¯ããã¹ãå
ã®ãã¹ãŠã®åºçŸãè¿ããŸããã
åãJavaScriptã®äŸïŒ
let str = 'Hello world'; let result = str.match(/o/); console.log(result);
["o", index: 4, input: "Hello world"]
ãã³ãã¬ãŒã修食å
æ£èŠè¡šçŸã«ã¯ãæ€çŽ¢ã®åäœãå€æŽããäžé£ã®ä¿®é£ŸåããããŸãã ãããã¯ãã©ãã³ã¢ã«ãã¡ãããã®1æåã§ç€ºãããæ£èŠè¡šçŸã®æ«å°Ÿã®ã/ãã®åŸã«é
眮ãããŸãã
- i-ãã¿ãŒã³å
ã®æåã¯ã倧æåãšå°æåã®äž¡æ¹ã®æåã«å¯Ÿå¿ããŸãã
- m-ããã©ã«ãã§ã¯ãããã¹ãã¯åäžè¡ã®æååãšããŠæ±ãããŸãã æååã^ãã®å
é ã®ã¡ã¿ãã£ã©ã¯ã¿ãŒã¯åŠçäžã®ããã¹ãã®å
é ã«ã®ã¿å¯Ÿå¿ããæååã$ãã®æ«å°Ÿã®ã¡ã¿ãã£ã©ã¯ã¿ãŒã¯ããã¹ãã®æ«å°Ÿã«å¯Ÿå¿ããŸãã ãã®ä¿®é£Ÿåã䜿çšãããå Žåããè¡é ãããã³ãè¡æ«ãã®ã¡ã¿æåã¯ã翻蚳ããã³è¡ã®ä»»æã®æåã®åããããã£ãŠè¡ã®åŸãè¡é ãè¡æ«ã®äœçœ®ã«ã察å¿ããŸãã
PHP
ã§äœ¿çšããããã®ä»ã®ä¿®é£Ÿåã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
JavaScriptã§ã¯ã
ãã¡ã ã
ããã§äžè¬çãªä¿®é£Ÿå
ã«ã€ããŠèªãããšãã§ã
ãŸã ã
JavaScript修食åã䜿çšãã以åã®æ£èŠè¡šçŸã®äŸïŒ
let str = "hello world \ How is it going?" let result = str.match(/o/g); console.log(result);
["o", "o", "o", "o"]
éåžžã®ã¡ã¿ãã£ã©ã¯ã¿ãŒ
éåžžã«åºæ¬çãªããšãç¥ãããšãã§ãããããæåã®äŸã¯ããªãåå§çã§ãã åŠç¿ããã°ããã»ã©ãäŸã¯çŸå®ã«è¿ã¥ããŸãã
ã»ãšãã©ã®å Žåãã©ã®ããã¹ãã解æããå¿
èŠããããäºåã«ããããŸããã äºåã«ããã£ãŠããã®ã¯ããããã®ã«ãŒã«ã»ããã®ã¿ã§ãã SMSã®PINã³ãŒããã¬ã¿ãŒã§ã®ã¡ãŒã«ãªã©ã
æåã®äŸã§ã¯ãããã¹ããããã¹ãŠã®æ°å€ãååŸããå¿
èŠããããŸãã
: â, 1528. .â
ä»»æã®çªå·ãéžæããã«ã¯ãã[0123456789]ããæå®ããŠãã¹ãŠã®çªå·ãåéããå¿
èŠããããŸãã Shorterã¯ã[0-9]ãã®ããã«èšå®ã§ããŸãã ãã¹ãŠã®æ°åã«ã¡ã¿æåã\ dãããããŸãã åãããã«æ©èœããŸãã
ããããæ£èŠè¡šçŸã/ \ d /ããæå®ãããšãæåã®æ°åã®ã¿ãè¿ãããŸãã ãã¡ããããgã修食åã䜿çšããããšãã§ããŸããããã®å Žåãåæ¡ã¯æ°ãããªã«ã¬ã³ã¹ãšèŠãªããããããé
åã®åå¥ã®èŠçŽ ãšããŠè¿ãããŸãã
éšåæååãåäžã®åºçŸãšããŠè¡šç€ºããããã«ããã©ã¹èšå·ã+ããšã¢ã¹ã¿ãªã¹ã¯ã*ãããããŸãã æåã®ãã®ã¯ãéšåæååãç§ãã¡ã«é©ããŠããããšã瀺ããŠãããå°ãªããšã1ã€ã®æåãã»ããã«é©ããŠããŸãã 2çªç®ã¯ããã®æåã»ãããããã§ããå Žåãããã§ãªãå Žåããããããã¯æ£åžžã§ãã ããã«ã次ã®ããã«é©åãªæåã®æ£ç¢ºãªå€ã瀺ãããšãã§ããŸããã{N}ããNã¯é©åãªéã§ãã ãŸãã¯ãã{NãM}ãã®ããã«æå®ããŠããfromããšãtoããå°ããŸãã
ããã念é ã«çœ®ããããã€ãã®äŸããããŸãã
: â 2 .â . RegExp: â/\d/â
: â : 24356â â .â , . RegExp: â/\d*/â
: â 89091534357â 11 , FALSE, . RegExp: â/\d{11}/â
ã»ãŒåãæ¹æ³ã§ãç§ãã¡ã¯æçŽãæ±ããŸããæçŽãããããšãå¿ããªãã§ãã ããã ããã¯ãæåãèšå®ããæ¹æ³ã§ãã
ããªã«æåã䜿çšãããšãæå®ãããç¯å²ã¯ç°ãªããšã³ã³ãŒãã£ã³ã°ã«å¯ŸããŠç°ãªãåäœãããŸãã ããšãã°ãUnicodeã§ã¯ãæåããã¯ãã®ç¯å²ã«å«ãŸããŸããã 詳现ã«ã€ããŠã¯ãã¡ãã
ã芧ãã ãã ã
ããã€ãã®äŸïŒ
: â â â â ââ, ââ. RegExp: â/[--]+/â
ãã®ãããªåŒã¯ãæã«å«ãŸããŠãããã¹ãŠã®åèªãéžæããããªã«æåã§èšè¿°ãããŸãã 3çªç®ã®åèªãå¿
èŠã§ãã
æåãšæ°åã«å ããŠã次ã®ãããªéèŠãªèšå·ã䜿çšã§ããŸãã
- \ s-ã¹ããŒã¹
- ^-è¡ã®å§ãŸã
- $-è¡æ«
- | -ããŸãã¯ã
åã®äŸã¯ããã·ã³ãã«ã«ãªããŸããã
: â â â â ââ, ââ. RegExp: â/[--]+$/â
æ€çŽ¢ã¯ãŒããæåŸã§ããããšã確å®ã«ããã£ãŠããå Žåãã$ããå
¥åãããšãäœæ¥ã®çµæã¯æåã»ããã®ã¿ã«ãªãããã®åŸã«è¡ã®çµãããæ¥ãŸãã
è¡ã®å
é ãšåãããšïŒ
: â â â â ââ, ââ. RegExp: â/^[--]+/â
ã¡ã¿ãã£ã©ã¯ã¿ãŒãããã«ç解ããåã«ãã^ãèšå·ãåå¥ã«èª¬æããå¿
èŠããããŸããããã¯ã2ã€ã®äœåã«äžåºŠã«è¡ãããã§ãïŒããã«ãããããèå³æ·±ããã®ã«ãªããŸãïŒã å Žåã«ãã£ãŠã¯ãè¡ã®å§ãŸãã瀺ããŸãããåŠå®ã®å ŽåããããŸãã
ããã¯ãèªåã«åã£ãæåãããèªåã«åã£ãŠããªãæåãæå®ããæ¹ãç°¡åãªå Žåã«å¿
èŠã§ãã
ç§ãã¡ã«åã£ãæåã»ãããã³ã³ãã€ã«ãããšããŸãïŒâ [a-z0-9]âïŒå°ããªã©ãã³æåãŸãã¯æ°åãç§ãã¡ã«åã£ãŠããŸãïŒã ããã§ããã以å€ã®æåã«æºè¶³ããŠãããšããŸãã ã[^ a-z0-9]ãã®ããã«è¡šç€ºãããŸãã
äŸïŒ
: â â . RegExp: â[^\s]+â
ãã¹ãŠã®ãã¹ããŒã¹ãªãããéžæããŸãã
ãããã£ãŠãããã«äž»èŠãªã¡ã¿ãã£ã©ã¯ã¿ãŒã®ãªã¹ãããããŸãã
- \ d-ä»»æã®æ°åãšäžèŽããŸãã åçã®[0-9]
- \ D-æ°å以å€ã®æåã«äžèŽããŸãã åçã®[^ 0-9]
- \ s-空çœæåã«äžèŽããŸãã åçã®[\ t \ n \ r \ f \ v]
- \ S-ä»»æã®é空çœæåãšäžèŽããŸãã åçã®[^ \ t \ n \ r \ f \ v]
- \ w-ä»»æã®æåãŸãã¯æ°åãšäžèŽããŸãã åçã®[a-zA-Z0-9_]
- \ W-ãã®é; åçã®[^ a-zA-Z0-9_]
- ã -ïŒåãªããããïŒããã£ãªããžãã®ç¿»èš³ä»¥å€ã®æå
æŒç®å[]ããã³ïŒïŒ
äžèšã§èª¬æããããã«ã[]ã䜿çšããŠè€æ°ã®æåãã°ã«ãŒãåãããšæšæž¬ã§ããŸãã ãããã£ãŠãã»ããã®ã©ã®ãã£ã©ã¯ã¿ãŒãç§ãã¡ã«åããšèšããŸãã
äŸïŒ
: â I dont know, !â . RegExp: â/[A-Za-z\s]{2,}/â
ããã§ã¯ããã¹ãŠã®ã©ãã³æåãšã¹ããŒã¹ãã°ã«ãŒãïŒæå[]ã®éïŒã«ãŸãšããŸãã {}ã䜿çšããŠã空ã®ã¹ããŒã¹ãããšã³ããªãé€å€ãã
å°ãªããšã 2æåã®ãšã³ããªã«é¢å¿ãããããšã瀺ããŸããã
åæ§ã«ãã[^ A-Za-z \ s] {2ã}ããå転ããããšããã¹ãŠã®ãã·ã¢èªã®åèªãååŸã§ããŸãã
[]ãšã¯ç°ãªããæåïŒïŒã¯ããŒã¯ãããåŒãåéããŸãã ãããã¯ããã£ããã£ããšåŒã°ããããšããããŸãã
ãããã¯ãéžæããããŒã¹ïŒãããããåºåå
ã®è€æ°ã®ãªã«ã¬ã³ã¹[]ã§æ§æãããïŒãæž¡ãããã«å¿
èŠã§ãã
äŸïŒ
: 'Email you sent was ololo@example.com Is it correct?' email.
å€ãã®è§£æ±ºçããããŸãã 以äžã®äŸã¯ãæ£èŠè¡šçŸã®åšåã瀺ã
ããããã®ãªãã·ã§ã³ã§ãã å®éãé»åã¡ãŒã«ã®æ£ç¢ºãã決å®ãã
RFCããããŸãã ãããŠãRFCãèŠåãããããŸã-
ããã«ããã€ãã®äŸããããŸãã
ã¹ããŒã¹ä»¥å€ã®ãã¹ãŠãéžæããŸãïŒé»åã¡ãŒã«ã®æåã®éšåã«ä»»æã®æåã»ãããå«ããããšãã§ããããïŒããã®åŸã«@èšå·ãç¶ãããã®åŸã«ããªãªããšã¹ããŒã¹ãããªãªããå°æåã®ã©ãã³æåãé€ã...
ããã§ã¯ãè¡ããŸãããïŒ
- ã¹ããŒã¹ãªãã§ãã¹ãŠãéžæããŸãïŒã[^ \ s] +ã
- @èšå·ãéžæããŸãïŒã@ã
- ããªãªããšã¹ããŒã¹ä»¥å€ãéžæããŸãïŒã[^ \ s \ã] +ã
- ãã€ã³ããéžæããŸãïŒâ \ãâïŒã¡ã¿æåããšã¹ã±ãŒãããã«ã¯ããã¯ã¹ã©ãã·ã¥ãå¿
èŠã§ãããããæåã¯ä»»æã®æåãèšè¿°ããããã§ã-äžèšåç
§ïŒ
- å°æåã®ã©ãã³æåãéžæããŸãïŒâ [az] +â
ããã¯ããã»ã©é£ãããªãããšãå€æããŸããã ããã§ãã¡ãŒã«ãéšåçã«åéãããŸããã PHPã§ã®preg_matchã®çµæã®äŸãèããŠã¿ãŸãããã
<?php $text = 'Email you sent was ololo@example.com. Is it correct?'; $regexp = '/[^\s]+@[^\s\.]+\.[az]+/'; $result = preg_match_all($regexp, $text, $match); var_dump( $result, $match );
int(1) array(1) { [0]=> array(1) { [0]=> string(13) "ololo@example.com" } }
ããã£ãïŒ ãããããã¡ã€ã³ãšååãåå¥ã«ã¡ãŒã«ã§åä¿¡ããå¿
èŠãããå Žåã¯ã©ãã§ããããïŒ ãããŠããªããšãã³ãŒãã§ããã«äœ¿çšããŸããïŒ ãããããã£ããã£ããç§ãã¡ãå©ããå Žæã§ãã äŸã®ããã«ãå¿
èŠãªãã®ãéžæããèšå·ïŒïŒã§å²ã¿ãŸãã
ããã¯ïŒ
/[^\s]+@[^\s\.]+\.[az]+/
次ã®ããã«ãªããŸããïŒ
/([^\s]+)@([^\s\.]+\.[az]+)/
ç§éã¯è©Šã¿ãŸãïŒ
<?php $text = 'Email you sent was ololo@example.com. Is it correct?'; $regexp = '/([^\s]+)@([^\s\.]+\.[az]+)/'; $result = preg_match_all($regexp, $text, $match); var_dump( $result, $match );
int(1) array(3) { [0]=> array(1) { [0]=> string(13) "ololo@example.com" } [1]=> array(1) { [0]=> string(5) "ololo" } [2]=> array(1) { [0]=> string(7) "example.com" } }
äžèŽé
åã§ã¯ããŒããšã³ããªã¯åžžã«æ£èŠè¡šçŸã®å®å
šãªåºçŸã§ãã 次ã«ãããã£ããã£ãã«é²ã¿ãŸãã
PHPã§ã¯ã次ã®æ§æã䜿çšããŠããã£ããã£ããšããååãä»ããããšãã§ããŸãã
/(?<mail>[^\s]+)@(?<domain>[^\s\.]+\.[az]+)/
ããããããããé
åã¯é£æ³çã«ãªããŸãïŒ
<?php $text = 'Email you sent was ololo@example.com. Is it correct?'; $regexp = '/(?<mail>[^\s]+)@(?<domain>[^\s\.]+\.[az]+)/'; $result = preg_match_all($regexp, $text, $match); var_dump( $result, $match );
int(1) array(5) { [0]=> array(1) { [0]=> string(13) "ololo@example.com" } ["mail"]=> array(1) { [0]=> string(5) "ololo" } ["domain"]=> array(1) { [0]=> string(7) "example.com" } }
ããã«ãããã³ãŒããšèŠåæ§ã®äž¡æ¹ãèªã¿ããããªããããã«+100ã«ãªããŸãã
å®ç掻ã®äŸ
æ°ãããã¹ã¯ãŒããæ€çŽ¢ããParsimã®æçŽïŒ
HTMLã³ãŒããèšèŒãããæçŽããããŸããæ°ãããã¹ã¯ãŒããåŒãåºãå¿
èŠããããŸãã ããã¹ãã¯è±èªã§ããã·ã¢èªã§ãããŸããŸããã
: â: <b>f23f43tgt4</b>â âpassword: <b>wh4k38f4</b>â RegExp: â(password|):\s<b>([^<]+)<\/b>â
æåã«ããã¹ã¯ãŒãã®åã®ããã¹ãã«ã¯ãããŸãã¯ãã䜿çšãã2ã€ã®ãªãã·ã§ã³ããããŸãã
ä»»æã®æ°ã®ãªãã·ã§ã³ããªã¹ãã§ããŸãã
(password|)
次ã«ãã³ãã³ãš1ã€ã®ã¹ããŒã¹ããããŸãã
:\s
次ã¯ã¿ã°èšå·bã§ãã
<b>
ãããŠãbã¿ã°ãéããŠããããšã瀺ããããã<ãèšå·ä»¥å€ã®ãã¹ãŠã«é¢å¿ããããŸãã
([^<]+)
ç§ãã¡ã¯åœŒãå¿
èŠãšããŠããã®ã§ãç§ãã¡ã¯åœŒãæåã«å
ã¿ãŸãã
次ã«ãçµäºã¿ã°bãäœæããã/ãæåããšã¹ã±ãŒãããŸããããã¯ç¹æ®æåã§ããããã§ãã
<\/b>
ãã¹ãŠãéåžžã«ç°¡åã§ãã
Parsim URLïŒ
PHPã«ã¯ãURLãæäœããŠã³ã³ããŒãã³ãéšåã«è§£æããã®ã«åœ¹ç«ã€ã¯ãŒã«ãªæ©èœããããŸãã
<?php $URL = "https://hello.world.ru/uri/starts/here?get_params=here#anchor"; $parsed = parse_url($URL); var_dump($parsed);
array(5) { ["scheme"]=> string(5) "https" ["host"]=> string(14) "hello.world.ru" ["path"]=> string(16) "/uri/starts/here" ["query"]=> string(15) "get_params=here" ["fragment"]=> string(6) "anchor" }
å®æçã«åãããšãããŸããããïŒ :)
URLã¯ã¹ããŒã ã§å§ãŸããŸãã ç§ãã¡ã«ãšã£ãŠãããã¯http / httpsãããã³ã«ã§ãã è«ççãªããŸãã¯ããäœæã§ããŸãã
(http|https)
ããããããªãã¯ã«ã³ãã³ã°ããŠãã®ããã«ããããšãã§ããŸãïŒ
http[s]?
ãã®å Žåãèšå·ãïŒãã¯ãsããé£ã¹ãããšãã§ããããšãæå³ããŸãããããã§ã¯ãããŸãã...
次ã«ããïŒ//ãããããŸãããã/ãæåããšã¹ã±ãŒãããå¿
èŠããããŸãïŒäžèšãåç
§ïŒã
â:\/\/â
次ã«ãã/ãèšå·ãŸãã¯è¡æ«ã«ãã¡ã€ã³ããããŸãã æ°åãæåãã¢ã³ããŒã¹ã³ã¢ãããã·ã¥ãããªãªãã§æ§æã§ããŸãã
[\w\.-]+
ããã§ãã¡ã¿æåã\ wãããããã\ããããã³ããã·ã¥ã-ãã1ã€ã®ã°ã«ãŒãã«ãŸãšããŸãã
次ã¯URIã§ãã ããã§ã¯ãã¹ãŠãç°¡åã§ãããã¹ãŠãçå笊ãŸãã¯è¡æ«ã«ç§»åããŸãã
[^?$]+
ããã§çå笊ã«ãªããŸããçå笊ã¯æ¬¡ã®å Žåãšããã§ãªãå ŽåããããŸãã
[?]?
次ã«ãè¡æ«ãŸãã¯ã¢ã³ã«ãŒã®å
é ãŸã§ã®ãã¹ãŠïŒèšå·ïŒïŒ-ãã®éšåã次ã®ããã«ãªããªãããšãå¿ããªãã§ãã ããã
[^
次ã¯ïŒãããããŸããããããã§ãªããããããŸããïŒ
[
次ã«ãããããã°ãè¡æ«ãŸã§ã®ãã¹ãŠïŒ
[^$]+
æçµçã«ã¯ãã¹ãŠã®çŸããã次ã®ããã«ãªããŸãïŒæ®å¿µãªãããHabrãè¡ã®äžéšãã³ã¡ã³ããšèŠãªããªãããã«ãã®éšåãæ¿å
¥ããæ¹æ³ã¯ããããŸããã§ããïŒã
/(?<scheme>http[s]?):\/\/(?<domain>[\w\.-]+)(?<path>[^?$]+)?(?<query>[^
äž»ãªããšã¯ç¹æ»
ããªãããšã§ãïŒ :)
<?php $URL = "https://hello.world.ru/uri/starts/here?get_params=here#anchor"; $regexp = â/(?<scheme>http[s]?):\/\/(?<domain>[\w\.-]+)(?<path>[^?$]+)?(?<query>[^
array(11) { [0]=> string(61) "https://hello.world.ru/uri/starts/here?get_params=here#anchor" ["scheme"]=> string(5) "https" ["domain"]=> string(14) "hello.world.ru" ["URI"]=> string(16) "/uri/starts/here" ["params"]=> string(15) "get_params=here" ["anchor"]=> string(6) "anchor" }
圌ãèªèº«ã®æã§ã®ã¿ãããã¯ã»ãŒåãã§ããããšãå€æããŸããã

æ£èŠè¡šçŸã§è§£æ±ºãããªãã¿ã¹ã¯
äžèŠãããšãæ£èŠè¡šçŸã䜿çšããŠããã¹ããèšè¿°ããã³è§£æã§ããããã§ãã ããããæ®å¿µãªãããããã¯ããã§ã¯ãããŸããã
æ£èŠè¡šçŸã¯åœ¢åŒèšèªã®äºçš®ã§ããããã§ã ã¹ããŒéå±€ã§ã¯æãåçŽãª3çªç®ã®ã¿ã€ãã«å±ããŸãã
ããã«ã€ããŠã
ãã®èšèªã䜿çšãããšãããšãã°ãææ³ãåã蟌ãŸããããã°ã©ãã³ã°èšèªã®æ§æã解æã§ããŸããã ãŸãã¯HTMLã³ãŒãã
ã¿ã¹ã¯ã®äŸïŒ
ã¹ãã³ãããããã®äžã«ã¯ä»ã«ãå€ãã®ã¹ãã³ããããã©ãã ãã®éãã¯ããããŸããã ãã®ç¯å²å
ã«ãããã¹ãŠã®ãã®ãéžæããå¿
èŠããããŸãã
<span> <span>ololo1</span> <span>ololo2</span> <span>ololo3</span> <span>ololo4</span> <span>ololo5</span> <...> </span>
ãã¡ãããHTMLã解æããå Žåããã®ç¯å²ã ãã§ã¯ãããŸããã :)
äžçªäžã®è¡ã¯ãããæç¹ã§ãã¹ãã³æåãš/ã¹ãã³æåããã«ãŠã³ããã§ãããéå§æåãšçµäºæåãåãæ°ã§ãªããã°ãªããªãããšãæå³ããŸãã ãããŠããããŸã§ãã¢ããªãã£ãçµäºèšå·ããããã¯ãåé¢ããçµäºèšå·ã§ããããšããç解ãããŸãã
ã³ãŒããš{}æåã«ã€ããŠãåãã§ãã
äŸïŒ
function methodA() { function() {<...>} if () { if () {<...>} } }
ãã®ãããªæ§é ã§ã¯ãæ£èŠè¡šçŸã䜿çšããŠãã³ãŒãå
ã®éãæ¬åŒ§ãåæé¢æ°ãå®äºãããã®ãšåºå¥ããããšã¯ã§ããŸããïŒã³ãŒãããã®é¢æ°ã ãã§æ§æãããŠããªãå ŽåïŒã
ãã®ãããªåé¡ã解決ããã«ã¯ãããé«ãã¬ãã«ã®èšèªã䜿çšãããŸãã
ãããã«
æ£èŠè¡šçŸã®äžçã®åºæ¬ã«ã€ããŠããçšåºŠè©³ãã話ããŠã¿ãŸããã ãã¡ããããã¹ãŠã1ã€ã®èšäºã«åããããšã¯äžå¯èœã§ãã 圌ããšã®ãããªãäœæ¥ã¯ãçµéšãšã°ãŒã°ã«ã®èœåã®åé¡ã§ãã
ãæž
èŽããããšãããããŸããã