рд░реВрдмреА рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рд╕реЗ рдореБрдХреНрддрд┐ рд╣реИ рдФрд░ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рд╕рдкрдирд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд┐рд╖реНрдкрдХреНрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ, рддреЛ рдпрд╣ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд░реВрдмреА рдХреА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ (regexes, regexps, regulars) рдкрд░реНрд▓ 5 рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрди рд╕рднреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд░реНрд▓, рдкрд╛рдпрдерди рдпрд╛ рдкреАрдПрдЪрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд░реВрдмреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╢рдХреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЫреЛрдЯреЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд░реВрдмреА рдореЗрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реВрдВред

рд░реВрдмреА рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ


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

r1 = Regexp.new тАЬaтАЭ r2 = Regexp.new тАЬbтАЭ ru = Regexp.union r1, r2 


рд╕рдВрдШ рд╕реЗ рдЙрддреНрдкрдиреНрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧреАред

рдирд┐рдпрдорд┐рдд-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рд╛рди рдСрдкрд░реЗрдЯрд░ рдкрд╣рд▓реЗ рдореИрдЪ рдпрд╛ рд╢реВрдиреНрдп рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдорд┐рд▓ рд░рд╣реЗ рдореИрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк рдкрд░реНрд▓ рдХреА рддрд░рд╣, рд╡рд┐рд╢реЗрд╖ рдЪрд░, $ ~, $ ', $ &, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЪрд░ $ 1, $ 2, ... рд╕рдореВрд╣реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдпрд╛рдж рд░рдЦрдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рд▓реЛрдЧ рджреВрд╕рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд░реВрдмреА рдореЗрдВ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ - рдЖрдк Regexp.last_match рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 тАЬabcdeтАЭ =~ /(b)(c)(d)/ Regexp.last_match[0] # "asd" Regexp.last_match[1] # "b" Regexp.last_match[2] # "c" Regexp.last_match[3] # "d" Regexp.last_match.pre_match # "a" Regexp.last_match.post_match # "e" 


рдирд╛рдорд┐рдд рд╕рдореВрд╣


рд╕рдВрд╕реНрдХрд░рдг 1.9 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рд░реВрдмреА рдирд╛рдорд┐рдд рд╕рдореВрд╣реЛрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
 "a reverse b".gsub /(?<first>\w+) reverse (?<second>\w+)/, '\k<second> \k<first>' # тАЬbaтАЭ 


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

\ k <group_name> - рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдХреНрд░рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдирд╛рдорд┐рдд рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдмреИрдХрд▓рд┐рдВрдХреНрд╕ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред
\ g <group_name> рдкрд╣рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдорд┐рдд рд╕рдореВрд╣ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рдЕрдиреБрдХреНрд░рдо рд╣реИред рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 "1 1" =~ /(?<first>\d+) \k<first>/ # 0 "1 2" =~ /(?<first>\d+) \k<first>/ #nil "1 a" =~ /(?<first>\d+) \k<first>/ #nil "1 1" =~ /(?<first>\d+) \g<first>/ # 0 "1 2" =~ /(?<first>\d+) \g<first>/ # 0 "1 a" =~ /(?<first>\d+) \g<first>/ #nil 


рдЖрдк рдЗрди рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдореИрдЪрдбрд╛рдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдЪ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 Regexp.last_match[:first] 


рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ


рд░реВрдмреА рдореЗрдВ рдкрд╛рд░рдВрдкрд░рд┐рдХ = ~ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдЪ рд╡рд┐рдзрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдФрд░ рд░реЗрдЧреЗрдХреНрд╕рдкреА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрдХреНрд░рдордг рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореИрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 "abcde"[/bc?f?/] # "bc" 

рд╕рд╛рде рд╣реА рд╕реНрд▓рд╛рдЗрд╕ рд╡рд┐рдзрд┐:
 "abcde".slice(/bc?f?/) # "bc" 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рд╣реИ, рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ:
 /bc?f?/ === "abcde" # true 

рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд░реВрдмреА рднрд╛рд╖рд╛ рдХреА рдЗрд╕ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдПрдХ рдЖрд╡реЗрджрди рд╣реИ, рдЬрд┐рд╕реЗ рдиреАрдЪреЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ


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

 str = 'september' case str when /june|july|august/: puts "it's summer" when /september|october|november/: puts "it's autumn" end 


рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдорд▓реЗ рдХреА рддреБрд▓рдирд╛ рдХреЗрд╡рд▓ рдЙрдкрд░реЛрдХреНрдд рдСрдкрд░реЗрдЯрд░ === ( рдпрд╣рд╛рдБ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг) рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ regexps рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╣реА рд╕рд▓реАрдХреЗ рдФрд░ рд╢рд╛рди рд╕реЗ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╡рд┐рднрд╛рдЬрди рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░реВрдмреА-рдбреЙрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг:
 "1, 2.34,56, 7".split(%r{,\s*}) # ["1", "2.34", "56", "7"] 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛:
 тАЬone two threeтАЭ.split(/\W+/) 

рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
 ",      ".split(/[^[:word:]]+/) # ["", "", "", "", "", "", ""] (ruby 1.9 only) 


рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рднрд╛рдЧреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд┐рдЫрд▓рд╛ рдЙрджрд╛рд╣рд░рдг:
 ",      ".scan(/[[:word:]]+/) # ["", "", "", "", "", "", ""] (ruby 1.9 only) 


рд╕рдм рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкрд╣рд▓реА рдШрдЯрдирд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдЧреЗрдХреНрд╕рдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
 "today is september 25".sub(/\w+mber/, 'july') # "today is july 25" 

рдЗрд╕реА рддрд░рд╣, рдЖрдк рдЙрдк рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!, Gsub рдФрд░ gsub! .. рд╡рд┐рдзрд┐рдпрд╛рдБред

рд╡рд┐рднрд╛рдЬрди рд╡рд┐рдзрд┐, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреА рд╣реИ, рдПрдХ рдкрд░рд┐рд╕реАрдордирдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИ:
 "12:35".partition(/[:\.,]/) # ["12", ":", "35"] 

рдЗрд╕реА рддрд░рд╣, рдЖрдк рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рд░рд┐рдВрдбреЗрдХреНрд╕ рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓реА рдФрд░ рдЖрдЦрд┐рд░реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЧреЗ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ


1. рдлреНрд░рд┐рд▓реНрдб - рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ
2. рдлрд▓рд╛рдВрдЧрди, рдорд╛рддреНрд╕реБрдореЛрддреЛ - рд░реВрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ
3. рд░реВрдмреА-рдбреЙрдХреНрдЯрд░ рд╡рд░реНрдЧ рд░реЗрдЧреЗрдХреНрд╕

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


All Articles