рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рдХреИрдЯреИрд╕реНрдЯреНрд░реЙрдлрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ

рдХреНрдпрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрджреЛрд╖ рдирд┐рдпрдорд┐рдд рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдорд╛рд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рд╣рд╛рдБ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

>>> r = '(a+)*b' 

рдмрд╕ рд╣рд╛рдВред рдирд┐рд░реНрджреЛрд╖ - рд╣рд╛рдБ рдХреА рддрд░рд╣ред рдмреЗрд╢рдХ рдпрд╣ рдирд╛рд╕рдордЭ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрд╖реНрдардХ рдФрд░ рддрд╛рд░рд╛рдВрдХрди рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

 >>> re.findall('(a+)*b', 'aaaaaab') ['aaaaaa'] 

рдХреВрд▓, рд╡рд░реНрдХрд┐рдВрдЧ, рдЖрдЗрдП рдЪрд▓рддреЗ рд╣реИрдВ рдмреАрдпрд░ рдкреАрдиреЗред

рд▓реЗрдХрд┐рди рдирд╣реАрдВ ...

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

1. рд╕рднреА рдЕрдкрд╡рд╛рд╣ 'рдП +' рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдХрджрдо рдкреАрдЫреЗ 'рдмреА' рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВред
2. рдЕрдм A + ' рдХреЗрд╡рд▓ ' рдЖрдЖрдЖ ' (рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ) рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ рджреЛрд╣рд░рд╛рд╡ ' * 'рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, ' b ' рдЕрднреА рднреА рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдХрджрдо рдкреАрдЫреЗред
3. рдкрд╣рд▓рд╛ 'a +' рдХреЗрд╡рд▓ 'aaaa ' рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рджреЛ 'aa' рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ '*' рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, 'b' рд╣рдореЗрдВ рдЕрднреА рднреА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдХрджрдо рдкреАрдЫреЗред
4. рдкрд╣рд▓рд╛ 'a +' рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ 'рдЖрдЖрдЖ' , рддрдкрд╕реНрдпрд╛ 'a' рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ '*' , рдЕрдЧрд▓рд╛ 'a' рд╕реЗ рджреВрд╕рд░реЗ рд░рд┐рдкреАрдЯ '*' , 'b' рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИ ...

рдареАрдХ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ - рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдкреВрд░реА рдЦреЛрдЬ рддрдХред

рдХреБрдЫ рдЖрдБрдХрдбрд╝реЗ:
 >>> timeit.timeit("import re; re.findall('(a+)*n', 'a'*20)", number=1) 0.24741506576538086 >>> timeit.timeit("import re; re.findall('(a+)*n', 'a'*22)", number=1) 0.99283289909362793 >>> timeit.timeit("import re; re.findall('(a+)*n', 'a'*24)", number=1) 3.9849259853363037 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдмрдбрд╝реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП, рдлреНрд░реАрдмреАрдПрд╕рдбреА рдкрд░ рдкрд╛рдпрдерди 2.6 рдПрдХ рд╕рдордпрдмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рд░рдирдЯрд╛рдЗрдордПрдпрд░ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╡рд╣реА рдкрд╛рдпрдерди рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд╝реБрд╢реА рд╕реЗ рдЦреЛрдЬрддрд╛ рд╣реИред 30 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдгреЛрдВ рдХреА рд░реЗрдЦрд╛рдУрдВ рдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреА :)

рдкреЛрд╕реНрдЯ рдЖрдЬ рдХреЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдкреНрд░рд╢реНрди рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрдврд╝реЗ рдЧрдП рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рднреВрд▓ рдЧрдП рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕: рдХреИрдЯрд╛рд╕реНрдЯреНрд░реЙрдлрд╝рд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред

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

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


All Articles