python3æ£èŠè¡šçŸ
æ£èŠè¡šçŸã¯ããããç°¡åã«æååããã¿ãŒã³ã«äžèŽãããã©ããã確èªããããã«ããªããå©ããããšãã§ãããç¹å¥ãªæåã·ãŒã±ã³ã¹ã§ãã
Pythonã¯ããŒãžã§ã³1.5ãPerlã¹ã¿ã€ã«ãæäŸããæ£èŠè¡šçŸãã¿ãŒã³ã®ã§ãã¢ãžã¥ãŒã«ã®å¢å ãåã
ã¢ãžã¥ãŒã«åPythonèšèªã¯ãæ£èŠè¡šçŸã®ãã¹ãŠã®æ©èœãæã£ãŠããããšãã§ããŸãã
ãã¿ãŒã³æååãšãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãã©ã°ããæ£èŠè¡šçŸãªããžã§ã¯ããçæããé¢æ°ãã³ã³ãã€ã«ããŸãã ãã®ãªããžã§ã¯ãã¯ãæ£èŠè¡šçŸã®ãããã³ã°ãšçœ®æã®ããã®ã¡ãœããã®ã»ãããæã£ãŠããŸãã
ã¢ãžã¥ãŒã«åãŸãã圌ãã®æåã®åŒæ°ãšããŠãã¿ãŒã³æååã䜿çšããŠããããã®æ©èœã®æ©èœãšççŸããæ¹æ³ãæäŸããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãäžè¬çãªPythonã®æ£èŠè¡šçŸåŠçæ©èœã玹ä»ããŸãã
re.matchæ©èœ
éå§äœçœ®ã®ãããã³ã°ãæåããªãå Žåãæååã®éå§äœçœ®ãããã¿ãŒã³ãäžèŽãããããšre.matchããããïŒïŒNoneãè¿ããŸãã
é¢æ°ã®ã·ã³ã¿ãã¯ã¹ïŒ
re.match(pattern, string, flags=0)
é¢æ°ã®ãã©ã¡ãŒã¿ïŒ
ãã©ã¡ãŒã¿ | 説æ |
---|---|
ãã¿ãŒã³ | ãããããæ£èŠè¡šçŸ |
æåå | äžèŽããæååã |
ãã©ã° | 倧æåãšå°æåãåºå¥ãããã«ãã©ã€ã³ã¯ããšããããã«äžèŽãããã©ãããããã³ïŒãã©ã°ã¯ãæ£èŠè¡šçŸã®ãããã³ã°ã¯ã以äžã®ãããªãå¶åŸ¡ããããã«äœ¿çšãããŸãã |
æåãããããre.matchæ¹æ³ã¯ãããããªããžã§ã¯ããããã§ãªãå Žåã¯ãªããè¿ããŸãã
ç§ãã¡ã¯ãäžèŽãããªããžã§ã¯ããåŒã«äžèŽååŸããã°ã«ãŒãïŒæ°å€ïŒãŸãã¯ã°ã«ãŒãïŒïŒé¢æ°ã䜿çšããããšãã§ããŸãã
ãªããžã§ã¯ãã®ã¡ãœããããããã³ã° | 説æ |
---|---|
ã°ã«ãŒãïŒNUM = 0ïŒ | åŒå šäœã®æååãããã³ã°ãã°ã«ãŒãïŒïŒã¯ã¿ãã«ã®ãããã®ã°ã«ãŒãã«å¯Ÿå¿ããå€ãè¿ããŸãããã®å Žåã«ã¯ãè€æ°ã®ã°ã«ãŒãçªå·ãå ¥åããããšãã§ããŸãã |
ã°ã«ãŒãïŒïŒ | ããã¯ãã°ã«ãŒãã«å«ãŸããçªå·ã«1ãããæååã®ãã¹ãŠã®ã°ã«ãŒãã®ã¿ãã«ãè¿ããŸãã |
å®æœäŸ1ïŒ
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3write.com').span()) # åšèµ·å§äœçœ®å¹é print(re.match('com', 'www.w3write.com')) # äžåšèµ·å§äœçœ®å¹é
äžã®äŸã®åºåã¯å®è¡ããŸãã
(0, 3) None
äŸ2ïŒ
#!/usr/bin/python3 import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) if matchObj: print ("matchObj.group() : ", matchObj.group()) print ("matchObj.group(1) : ", matchObj.group(1)) print ("matchObj.group(2) : ", matchObj.group(2)) else: print ("No match!!")
次ã®ããã«äžèšå®æœäŸã®çµæã¯æ¬¡ã®ãšããã§ãã
matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter
re.searchã¡ãœãã
re.searchæååå šäœãã¹ãã£ã³ããæåã«æåããããããè¿ããŸãã
é¢æ°ã®ã·ã³ã¿ãã¯ã¹ïŒ
re.search(pattern, string, flags=0)
é¢æ°ã®ãã©ã¡ãŒã¿ïŒ
ãã©ã¡ãŒã¿ | 説æ |
---|---|
ãã¿ãŒã³ | ãããããæ£èŠè¡šçŸ |
æåå | äžèŽããæååã |
ãã©ã° | 倧æåãšå°æåãåºå¥ãããã«ãã©ã€ã³ã¯ããšããããã«äžèŽãããã©ãããããã³ïŒãã©ã°ã¯ãæ£èŠè¡šçŸã®ãããã³ã°ã¯ã以äžã®ãããªãå¶åŸ¡ããããã«äœ¿çšãããŸãã |
æåãããããre.searchã¡ãœããã¯ãããããªããžã§ã¯ããããã§ãªãå Žåã¯ãªããè¿ããŸãã
ç§ãã¡ã¯ãäžèŽãããªããžã§ã¯ããåŒã«äžèŽååŸããã°ã«ãŒãïŒæ°å€ïŒãŸãã¯ã°ã«ãŒãïŒïŒé¢æ°ã䜿çšããããšãã§ããŸãã
ãªããžã§ã¯ãã®ã¡ãœããããããã³ã° | 説æ |
---|---|
ã°ã«ãŒãïŒNUM = 0ïŒ | åŒå šäœã®æååãããã³ã°ãã°ã«ãŒãïŒïŒã¯ã¿ãã«ã®ãããã®ã°ã«ãŒãã«å¯Ÿå¿ããå€ãè¿ããŸãããã®å Žåã«ã¯ãè€æ°ã®ã°ã«ãŒãçªå·ãå ¥åããããšãã§ããŸãã |
ã°ã«ãŒãïŒïŒ | ããã¯ãã°ã«ãŒãã«å«ãŸããçªå·ã«1ãããæååã®ãã¹ãŠã®ã°ã«ãŒãã®ã¿ãã«ãè¿ããŸãã |
å®æœäŸ1ïŒ
#!/usr/bin/python3 import re print(re.search('www', 'www.w3write.com').span()) # åšèµ·å§äœçœ®å¹é print(re.search('com', 'www.w3write.com').span()) # äžåšèµ·å§äœçœ®å¹é
äžã®äŸã®åºåã¯å®è¡ããŸãã
(0, 3) (11, 14)
äŸ2ïŒ
#!/usr/bin/python3 import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print ("searchObj.group() : ", searchObj.group()) print ("searchObj.group(1) : ", searchObj.group(1)) print ("searchObj.group(2) : ", searchObj.group(2)) else: print ("Nothing found!!")次ã®ããã«äžèšå®æœäŸã®çµæã¯æ¬¡ã®ãšããã§ãã
searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter
å·®åre.matchãšre.search
re.matchã¯ãæååã®å é ã«ã¯ãæ£èŠè¡šçŸãæºãããŠããªãå Žåã¯ãããã倱æããé¢æ°ã¯Noneãè¿ããæååã®å§ãŸãã«éããªããšäžèŽãããã€ããããäžèŽãããã®ãèŠã€ãããŸã§ãæååå šäœã«ãããre.searchã
äŸïŒ
#!/usr/bin/python3 import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print ("match --> matchObj.group() : ", matchObj.group()) else: print ("No match!!") matchObj = re.search( r'dogs', line, re.M|re.I) if matchObj: print ("search --> matchObj.group() : ", matchObj.group()) else: print ("No match!!")次ã®ããã«äžèšã®çµæã®äŸã次ã«ç€ºããŸãã
No match!! search --> matchObj.group() : dogs
æ€çŽ¢çœ®æ
Pythonã®reã¢ãžã¥ãŒã«ã¯ã眮ææååã®äžèŽã®ããã«re.subãæäŸããŸãã
æ§æïŒ
re.sub(pattern, repl, string, count=0)
è¿ãããæååã¯ãäžçªå·Šã®REãããããæååã眮æããããã«ç¹°ãè¿ãããããšã¯ãããŸããã§ãã ãã¿ãŒã³ãèŠã€ãããªãå Žåãæåããã®ãŸãŸè¿ãããŸãã
ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿æ°ã¯ã眮æãã¿ãŒã³ãããã³ã°åæ°ã®æ倧å€ã§ãããã«ãŠã³ãã¯éè² ã®æŽæ°ã§ãªããã°ãªããŸããã ããã©ã«ãå€ã¯ããã¹ãŠã®çºçã眮ãæããããã«ã0ã®æ段ã§ãã
äŸïŒ
#!/usr/bin/python3 import re phone = "2004-959-559 # è¿æ¯äžäžªçµè¯å·ç " # å é€æ³šé num = re.sub(r'#.*$', "", phone) print ("çµè¯å·ç : ", num) # 移é€éæ°åçå 容 num = re.sub(r'\D', "", phone) print ("çµè¯å·ç : ", num)次ã®ããã«äžèšå®æœäŸã®çµæã¯æ¬¡ã®ãšããã§ãã
çµè¯å·ç : 2004-959-559 çµè¯å·ç : 2004959559
æ£èŠè¡šçŸä¿®é£Ÿå - ãªãã·ã§ã³ã®ãã©ã°
æ£èŠè¡šçŸã¯äžèŽã¢ãŒããå¶åŸ¡ããããã®ä»»æã®ãã©ã°ã®ä¿®é£Ÿåãå«ããããšãã§ããŸãã 修食åã¯ããªãã·ã§ã³ã®ãã©ã°ãšããŠæå®ãããŠããŸãã ïŒ|ïŒãããåäœã®ORãä»ããŠããããšãã§ããè€æ°ã®ãã©ã°ãæå®ããŸãã re.IãšããŠ| re.Mã¯ç§ãšMãã©ã°ã«èšå®ãããŠããŸãïŒ
修食å | 説æ |
---|---|
re.I | ã ãããããã³ã°ã§ã¯ã倧æåãšå°æåã¯åºå¥ãããŠããŸãã |
re.L | ããŒã«ãªãŒãŒã·ã§ã³èå¥ãè¡ãïŒãã±ãŒã«å¯Ÿå¿ïŒãããã³ã° |
re.M | ^ãš$ã«åœ±é¿ãäžãããã«ãã©ã€ã³ã®ãããã³ã°ã |
re.S | æ¹è¡ãå«ãSoãã¯ããã¹ãŠã®æåã«ããã |
re.U | Unicodeæåã»ããã®æåã解決ããããã«ãããŸãã ãã®ãã©ã°ã¯ã\ Wã\ bã®ã\ B. \ wã«åœ±é¿ãäžããŸã |
re.X | ããªããç解ããããæ£èŠè¡šçŸãèšè¿°ããããã«ãããªããããæè»ãªãã©ãŒããããäžããããšã«ãã£ãŠããã®ãã©ã°ã |
æ£èŠè¡šçŸãã¿ãŒã³
æ£èŠè¡šçŸã瀺ãããã«ç¹å¥ãªæ§æã䜿çšããŠããã¿ãŒã³æååïŒ
æåãæ°åãã®ãã®ã æåãšæ°åã®æ£èŠè¡šçŸãã¿ãŒã³ã¯ãåãæååã«äžèŽããŸãã
åã«ããã¯ã¹ã©ãã·ã¥ãä»ãããšãã«æåãšæ°åã®ã»ãšãã©ã¯ãç°ãªãæå³ãæã€ããšã«ãªããŸãã
è©Šåèªäœã¯ããŸãã¯åœŒãã¯ç¹å¥ãªæå³ãè¡šããšãã«å¥èªç¹ã®ã¿ããšã¹ã±ãŒããããŸãã
ããã¯ã¹ã©ãã·ã¥èªèº«ã¯ãããã¯ã¹ã©ãã·ã¥ã»ãšã¹ã±ãŒãã䜿çšããå¿ èŠããããŸãã
æ£èŠè¡šçŸã¯ãéåžžãããã¯ã¹ã©ãã·ã¥ãå«ãã§ããã®ã§ãããªããããããããããè¡šçŸããããã«ãå ã®æååã䜿çšãããšæããŸãã ïŒ '//ãã³'ãšåããããªR '/ T'ãªã©ãïŒã¹ããŒãèŠçŽ ã¯ã察å¿ããç¹æ®æåã«äžèŽããŸãã
次ã®è¡šã¯ãæ£èŠè¡šçŸãã¿ãŒã³ã®æ§æã®ç¹å®ã®èŠçŽ ã瀺ããŠããŸãã ããããªãã®äœ¿çšãã¿ãŒã³ãªãã·ã§ã³ã®flagsåŒæ°ãæäŸããªããããã¿ãŒã³ã®ç¹å®ã®èŠçŽ ã®æå³ãå€æŽãããŸãã
ã¢ãŒã | 説æ |
---|---|
^ | æååã®å é ã«ãããããŸã |
$ | æååã®æ«å°Ÿã«ãããããŸãã |
ã | æ¹è¡ä»¥å€ã®ä»»æã®æåãšäžèŽre.DOTALLãã©ã°ãæå®ãããŠããå Žåãããªãã¯æ¹è¡ãå«ãä»»æã®æåãäžèŽãããããšãã§ããŸãã |
[ja.] | ãAMK]ããã ''ã 'M'ãŸã㯠'K'ïŒããã¯å¥ã ã«èšèŒãããŠããæåã®ã°ã«ãŒããè¡šãã®ã«äœ¿çšããŸãã |
[^ ja.] | ããªã[]ã®æåã¯ïŒ[^ abc]ã¯AãBãCã®æåã«å ããŠãäžèŽããŸããã |
*å | è¡šçŸãããã³ã°ã®0以äžã |
+å | ãããã³ã°è¡šçŸã®äžã€ãŸãã¯ãã以äžã |
åïŒ | ã»ã°ã¡ã³ããå®çŸ©ããããã«ãäžèšã®æ£èŠè¡šçŸã«ããäžèŽ0ãŸãã¯1ãé欲匵ããªæ¹æ³ |
{n}ãå | |
{ãn}ãå | nã¯çŽåã®åŒã®å®å šäžèŽã |
å{NãM} | ã»ã°ã¡ã³ããå®çŸ©ããããã«ãäžèšã®æ£èŠè¡šçŸã«ããmåã«ãããnã¯ã貪欲ãªæ¹æ³ |
| B | äžèŽãŸãã¯b |
ïŒåïŒ | æ¬åŒ§å ã®GãããçºçŸã¯ããŸããåºãè¡šããŸã |
ïŒïŒIMXïŒ | æ£èŠè¡šçŸã¯ã3ã€ã®ãªãã·ã§ã³ã®ãã©ã°ã§æ§æãããŠããŸããç§ãã¡ãŒãã«ããŸãã¯Xã ããã¯ãæ¬åŒ§å ã®é åã®ã¿ã«åœ±é¿ããŸãã |
ïŒïŒ-imxïŒ | æ£èŠè¡šçŸIãMããŸãã¯Xãªãã·ã§ã³ã®ãã©ã°éããŸãã ããã¯ãæ¬åŒ§å ã®é åã®ã¿ã«åœ±é¿ããŸãã |
ïŒïŒïŒåïŒ | ïŒja.ïŒäŒŒãŠããŸãããã°ã«ãŒããè¡šããã®ã§ã¯ãããŸããã |
ïŒIMX :?åïŒ | ç§ã¯ãæ¬åŒ§ãã¡ãŒãã«ããŸãã¯Xã«ãªãã·ã§ã³ã®ãã©ã°ã䜿çšããŸã |
ïŒ-imx :?åïŒ | ç§ã¯ãæ¬åŒ§å ã®ã¡ãŒãã«ã䜿çšãããããªãã·ã§ã³ã®ãã©ã°ãxã¯ããªãã§ãã ãã |
ïŒïŒïŒja.ïŒ | 泚æããŠãã ããã |
ïŒïŒ=åïŒ | å¿ ãåºåãæåã転éããŸãã ja.ã«ãã£ãŠããã«è¡šãå«ãŸããŠããæ£èŠè¡šçŸãå Žåãæ£åžžã«çŸåšã®å Žæã«ããããããã以å€ã®å Žåã¯å€±æããŸãã å«ãŸããŠããåŒãè©Šã¿ãããŠããããããäžåºŠããããã³ã°ãšã³ãžã³ã¯é²ã¿ãŸããããã¿ãŒã³ã®æ®ãã®éšåã¯ãå¶æ°ããªãã¿å³ããŠã¿ãŠãã ãããããŠããŸãã |
ïŒïŒïŒReïŒã | åæ¹åŠå®ããªãã¿ã ãããŠã確ãã«åãåºåã;æåå«ãŸããåŒã¯æååå ã®çŸåšäœçœ®ãšäžèŽããŠããŸãã |
ïŒïŒ>åïŒ | ç¬ç«ãããã¿ãŒã³ãããã³ã°ãããã¯ãã©ãã¯ãæé€ããŸãã |
\ W | ãããè±æ°å |
\ W | è±æ°å以å€ã«ããã |
\ S | ããã[\ãã³\ nã¯\ rã\ f]ã®ãšåçã®ä»»æã®ç©ºçœæåããã |
\ S | ä»»æã®é空çœæåã«äžèŽããŸã |
\ D | [0-9]ãšç䟡ã§ããä»»æã®æ°ãšäžèŽããŸãã |
\ D | ä»»æã®éæ°å€ãšäžèŽããŸã |
\ A | æååã®å é ã«ãããããŸã |
\ Z | äžèŽæååã®æåŸã«ã¯ãæ¹è¡ã«ãããããæååã®äž¡ç«¯ã ãåã«ãæ¹è¡ãååšããå Žåã Cèšèª |
\ Z | äžèŽæååã®æ«å°Ÿ |
\ G | äžèŽäžèŽã¯ãæåŸã®äœçœ®ãå®äºããŸããã |
\ B | ã€ãŸããããã¯èšèã®éã®äœçœ®ãšã¹ããŒã¹ãæããåèªã®å¢çã«äžèŽããŸãã äŸãã°ããå°èäœ\ b 'ã¯' erããšã® "決ããŠ"ãšäžèŽããªãããšãã§ããŸããããERãã§ãåè©ããäžèŽãããããšã¯ã§ããŸããã |
\ B | éã¯ãŒãå¢çãšäžèŽããŸãã ãErã\ Bãã¯ããerããšã®ãåè©ããäžèŽãããããšãã§ããŸãããã決ããŠããããŒãå ã«äžèŽããããšã¯ã§ããŸããã |
\ Nã\ tã®ããªã©ãæããããŸãã | æ¹è¡ã«ãããããŸãã ã¿ãæåã«äžèŽããŸãã åŸ ã£ãŠ |
\ 1 ja. \ 9 | ãã±ããã®nçªç®ã®ãµãåŒã«äžèŽããŸãã |
\ 10 | ããã¯è©ŠååŸã«ããå Žåã¯ãæåã®nåã®ãã±ããã®éšååŒã«äžèŽããŸãã ããã§ãªããã°ãåŒ8é²æåã³ãŒããæå³ããŸãã |
æ£èŠè¡šçŸã®äŸ
æåã®äžèŽ
äŸ | 説æ |
---|---|
ãã€ãœã³ | ããã€ãœã³ãããããã³ã°ã |
æåã¯ã©ã¹
äŸ | 説æ |
---|---|
ãPpã] ython | ããã€ãœã³ããŸãã¯ããã€ãœã³ãããããã³ã° |
ããã[ãã] | ããããã«ããŒããŸãã¯ãã«ãŒãã |
[AEIOU] | ãããã³ã°æ¬åŒ§å ã®æåã®ãã¡ã®ä»»æã®1æå |
[0-9] | ä»»æã®æ°åã«ãããããŸãã åæ§ã«[0123456789] |
[AZ] | ä»»æã®å°æåã«äžèŽããŸã |
[AZ] | ä»»æã®å€§æåã«äžèŽããŸã |
[A-ZA-Z0-9] | ä»»æã®æåãšæ°åãç §åã |
[^ AEIOU] | æå以å€ã®ãã¹ãŠã®æåã«å ããŠAEIOU |
[^ 0-9] | æ°å以å€ã®æåããããã³ã° |
ç¹æ®æåã¯ã©ã¹
äŸ | 説æ |
---|---|
ã | "\ n"以å€ã®ä»»æã®1æåã«äžèŽããŠããŸãã ã '\ n'ãå«ããŠã®äœ¿çšãšåæ§ã«ãä»»æã®æåãå«ããŠäžèŽãããã«ã¯ '[ã\ N]'ã¢ãŒãã |
\ D | æ¡ã®æåãšäžèŽããŸãã [0-9]ã«çžåœããŸãã |
\ D | æ°å以å€ã®æåã«äžèŽããŸãã ããã¯[^ 0-9]ãšç䟡ã§ãã |
\ S | ããã«ã¹ããŒã¹ãã¿ããæ¹ããŒãžãããã³ãå«ãä»»æã®ç©ºçœæåã«ãããããŸãã [\ F \ nã¯\ rã\ãã³\ V]ã«çžåœããŸãã |
\ S | ä»»æã®é空çœæåã«äžèŽããŸãã ç䟡ã§ãã[^ \ F \ nã¯\ rã\ãã³\ V]ã |
\ W | ã¢ã³ããŒã¹ã³ã¢ãå«ãä»»æã®åèªæåãšäžèŽããŠããŸãã ããã¯[A-ZA-Z0-9_] 'ãšç䟡ã§ãã |
\ W | ä»»æã®éåèªæåãšäžèŽããŸãã ããã¯ã '[^ A-ZA-Z0-9_]'ãšç䟡ã§ãã |