рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдирд╛рд▓реЙрдЧреНрд╕ред рднрд╛рдЧ рджреЛ

рд╣рдо рджреЛ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдФрд░ рдЕрдВрддрд░ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред


рдЖрдЬ рд╣рдо рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреНрд░рдорд╛рдВрдХрди, JSON, рдирд┐рдпрдорд┐рдд, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред


рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдиреНрдп рд▓реЗрдЦ:


  1. рдкрд╣рд▓рд╛ рднрд╛рдЧ рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг, рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░, рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо, рд╢рдмреНрджрдХреЛрд╖, рд╕реВрдЪрд┐рдпреЛрдВ, рддрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдШрдирди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред
  2. рдпрд╣ рд▓реЗрдЦ
  3. рднрд╛рдЧ рддреАрди : рдЖрдзреБрдирд┐рдХ рдкрд╛рдпрдерди рдФрд░ рдЬреЗрдПрд╕: рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрдЯрд░реНрди (рдПрдл-рд▓рд╛рдЗрди), рд╕реВрдЪреА рдЕрдирдкреИрдХрд┐рдВрдЧ, рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди, рд╕реВрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, рдЬрдирд░реЗрдЯрд░, рд╕реЗрдЯред
  4. рдЪреМрдерд╛ рд╣рд┐рд╕реНрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ, рдХрдХреНрд╖рд╛рдПрдВ, рд╡рд┐рд░рд╛рд╕рдд, рд╕реЗрдЯрд░ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рдХреНрд▓рд╛рд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдмрдирд╛рдирд╛ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

JSON


рдХрдИ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЯреНрд░рд╛рдВрд╕рдлрд░ рдФрд░ рдмрд╛рдж рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред


рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдорд╛рдирдХ рдЬреЗрдЯ рдореЙрдбреНрдпреВрд▓ рд╣реИ:


import json json_data = json.dumps(dictionary, indent=4) dictionary = json.loads(json_data) 

рдпрд╣рд╛рдБ рд╣рдо JSON рдХреЛ 4 рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред


JS рдореЗрдВ, JSON рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдмрдирд╛рдиреЗ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ:


 json_data = JSON.stringify(dictionary, null, 4); dictionary = JSON.parse(json_data); 

рдкрд╛рд░реНрд╕ рдирд┐рдпрдорд┐рдд рдХреЗ рд╕рд╛рде рддрд╛рд░


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рд▓реЗрдХрд┐рди рдПрдХ рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХрдИ рдореЗрдВ рдХреИрд╕реЗ рдмрд╛рдВрдЯрд╛ рдЬрд╛рдП, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рд╡рд┐рднрд╛рдЬрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреА рддрд░рд╣ рдПрдХрд▓ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ? рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ split() рд╡рд┐рдзрд┐ split() рдореЗрдВ рдЖрддреА рд╣реИред


рдкрд╛рдпрдерди рдореЗрдВ, split() рд╡рд┐рдзрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 import re #     "!?."         delimiter = re.compile(r'[!?\.]+\s*') text = "Hello!!! What's new? Follow me." sentences = delimiter.split(text) # sentences == ['Hello', "What's new", 'Follow me', ''] 

рдЬреЗрдПрд╕ рдореЗрдВ, split() рд╡рд┐рдзрд┐ рддрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ:


 //     "!?."         delimiter = /[!?\.]+\s*/; text = "Hello!!! What's new? Follow me."; sentences = text.split(delimiter) // sentences === ["Hello", "What's new", "Follow me", ""] 

рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдорд┐рдд рдЦреЛрдЬ


рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рд░реВрдкреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдИ-рдореЗрд▓ рдкрддреЗ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред


рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓реЗрдЦрдХ

рдирд┐рдпрдорд┐рдд рдХреЗ рд╕рд╛рде рдкрддреЗ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ


рдкрд╛рдпрдерди рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:


 import re # name, "@", and domain pattern = re.compile(r'([\w.+\-]+)@([\w\-]+\.[\w\-.]+)') match = pattern.match('hi@example.com') # match.group(0) == 'hi@example.com' # match.group(1) == 'hi' # match.group(2) == 'example.com' 

рдпрджрд┐ рдкрд╛рда рдХрд╛ рдПрдХ рдЦрдВрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ group() рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реЗ рдЦрдВрдб рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


0 - рдкреВрд░реА рд▓рд╛рдЗрди (рдЙрдк) рдорд┐рд▓рд╛рди, 1 - рдкрд╣рд▓рд╛ рд╕рдореВрд╣, 2 - рджреВрд╕рд░рд╛, рдЖрджрд┐ред


рдпрджрд┐ рдХреЛрдИ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ None рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ None рдЬрд╛рдПрдЧреАред


JS рдореЗрдВ, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ match() рдЬреЛ рдХрд┐рд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ null рдХреЗ рдорд┐рд▓рд╛рди рдХрд┐рдП рдЧрдП рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред


 // name, "@", and domain pattern = /([\w.+\-]+)@([\w\-]+\.[\w\-.]+)/; match = 'hi@example.com'.match(pattern); // match[0] === 'hi@example.com' // match[1] === 'hi' // match[2] === 'example.com' 

рдЬреЗрдПрд╕ рдореЗрдВ, рдорд┐рд▓рд╛рди рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдПрдХ рд╕рд░рдгреА рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╛рд▓рд╛ рддрддреНрд╡ [0] рдкреВрд░реА (рдЙрдк) рдкрдВрдХреНрддрд┐ рд╣реИ рдЬреЛ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдкрд╣рд▓рд╛ рддрддреНрд╡ рдкрд╣рд▓рд╛ рд╕рдореВрд╣ рд╣реИ, рджреВрд╕рд░рд╛ рддрддреНрд╡ рджреВрд╕рд░рд╛ рд╣реИ, рдЖрджрд┐ред - рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдореВрд╣реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред


рдХрднреА-рдХрднреА, рдЦреЛрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рда рдореЗрдВ рдирдореВрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ search() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд╛рдпрдерди рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХ рдорд┐рд▓рд╛рди рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддреА рд╣реИред рдЗрд╕ рдорд┐рд▓рд╛рди рд╡рд╕реНрддреБ рдХреА рдПрдХ start() рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рд▓рд╛рдЗрди рдореЗрдВ рдЗрд╕ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдШрдЯрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ:


 text = 'Say hi at hi@example.com' first_match = pattern.search(text) if first_match: start = first_match.start() # start == 10 

рдЬреЗрдПрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ search() рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИред рдпрд╛ -1 рдЕрдЧрд░ рдХреЛрдИ рдореИрдЪ рдирд╣реАрдВ рдорд┐рд▓рд╛ред


 text = 'Say hi at hi@example.com'; first_match = text.search(pattern); if (first_match > -1) { start = first_match; // start === 10 } 

рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдЖрдк рдбреЗрдЯрд╛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдкрд╛рда рдореЗрдВ рдХреБрдЫ рдЧреБрдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд▓рд╛рдЗрди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдИрдореЗрд▓ рдкрддреЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:


рдкрд╛рдпрдерди рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ sub() рд░реЗрдЧреЗрдХреНрд╕ рдкреИрдЯрд░реНрди рд╡рд┐рдзрд┐ рд╣реИ:


 html = pattern.sub( r'<a href="mailto:\g<0>">\g<0></a>', 'Say hi at hi@example.com', ) # html == 'Say hi at <a href="mailto:hi@example.com">hi@example.com</a>' 

JS рдбреЗрд╡рд▓рдкрд░ replace() рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 html = 'Say hi at hi@example.com'.replace( pattern, '<a href="mailto:$&">$&</a>', ); // html === 'Say hi at <a href="mailto:hi@example.com">hi@example.com</a>' 

рдкрд╛рдпрдерди рдореЗрдВ, рдорд┐рд▓рд╛рди рд╕рдореВрд╣ \g<0>, \g<1>, \g<2> , рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдЬреЗрдПрд╕ рдореЗрдВ, рдЬреИрд╕реЗ $&, $1, $2 , рдЖрджрд┐ред


рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рд╕реНрд░реЛрдд рдкрд╛рда рдХреЗ рд░реИрдкрд┐рдВрдЧ рдХреА рдЬрдЧрд╣ рдпрд╛ рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП, рдкрд╛рда рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдПрдХрддреНрд░ рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдХрд╛рд░реНрдп рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдореИрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ HTML рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред


рдЖрдЗрдП CAPITAL LETTERS рдореЗрдВ рд╕рднреА рдИ-рдореЗрд▓ рдкрддреЗ рдмрджрд▓реЗрдВред


рдкрд╛рдпрдерди рдореЗрдВ, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд┐рд▓рд╛рди рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИред рд╣рдо рдорд┐рд▓рд╛рди рдкрд╛рда рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:


 text = pattern.sub( lambda match: match.group(0).upper(), 'Say hi at hi@example.com', ) # text == 'Say hi at HI@EXAMPLE.COM' 

рдЬреЗрдПрд╕ рдореЗрдВ, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рд╛рди, рдкрд╣рд▓реА рдШрдЯрдирд╛, рджреВрд╕рд░рд╛, рдЖрджрд┐ рдорд┐рд▓рддрд╛ рд╣реИред рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рд░реЗрдЦрд╛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ:


 text = 'Say hi at hi@example.com'.replace( pattern, function(match, p1, p2) { return match.toUpperCase(); } ); // text === 'Say hi at HI@EXAMPLE.COM' 

рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐


рдкрд╛рдпрдерди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлреНрд░рдВрдЯ-рдПрдВрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдорддреМрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ / рдкрдврд╝рдиреЗ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, try..catch рдмреНрд▓реЙрдХ рдХреА try..except рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬреЗрдПрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рдХрд╛рдлреА рджреБрд░реНрд▓рдн try..catch ред


рд▓реЗрдХрд┐рди, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдХреЙрд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдХреЛрдб рдореЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд MyException рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ MyException рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЗрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ MyException , рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ try..except..finally рдмреНрд▓реЙрдХ рдореЗрдВ рд╣реИрдВрдбрд▓ рдХрд░реЗрдВ:


 class MyException(Exception): def __init__(self, message): self.message = message def __str__(self): return self.message def proceed(): raise MyException('Error happened!') try: proceed() except MyException as err: print('Sorry! {}'.format(err)) finally: print('Finishing') 

рдирд┐рдореНрди JS рдХреЛрдб рд╕рдорд╛рди рд╣реИ - рд╣рдо MyException рдХреНрд▓рд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рдлрдВрдХреНрд╢рди рдореЗрдВ MyException , рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ try..catch..finally рдмреНрд▓реЙрдХ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ:


 function MyException(message) { this.message = message; this.toString = function() { return this.message; } } function proceed() { throw new MyException('Error happened!'); } try { proceed(); } catch (err) { if (err instanceof MyException) { console.log('Sorry! ' + err); } } finally { console.log('Finishing'); } 

рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, MyException class рдореЗрдВ message рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ message рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред


рдмреЗрд╢рдХ, рдЕрдкрд╡рд╛рдж рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлреЗрдВрдХрд╛ / рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЕрдЧрд░ рдЖрдкрдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


  • JSON рд╕реЗ / рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕реАрдзрд╛ рд╣реИ - рдкрд╛рдпрдерди рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдЬреЗрдПрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред
  • рд░реЗрдЧреНрдпреБрд▓рд░ рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд░реНрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреВрд▓ рд╣реИред
  • рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЙрд▓, рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рдФрд░ рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдЖрдк рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд░реЗрдЦрд╛-рджрд░-рдкрдВрдХреНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рддрд╛рд░, рд╕рд░рдгрд┐рдпрд╛рдБ, рд╢рдмреНрджрдХреЛрд╢реЛрдВ, рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪред


рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдкрд╛рда рдкреИрдЯрд░реНрди, рдЕрдирдкреИрдХрд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ, рд▓реИрдореНрдмреНрдбрд╛ рдлрдВрдХреНрд╢рдиреНрд╕, рдЗрдВрдбреЗрдХреНрд╕, рдЬрдирд░реЗрдЯрд░ рдФрд░ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

Source: https://habr.com/ru/post/hi417513/


All Articles