StackOverflow рдкрд░ PHP рдЯреИрдЧ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдЖрдЧрдВрддреБрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдмрд╣реБрдд рдмрд╛рд░ рд╕рд╡рд╛рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTML рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рдЬрд╡рд╛рдм рд╣реИ:
тАЬрдЖрдк HTML рдХреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ HTML рдирд┐рдпрдорд┐рдд рдирд╣реАрдВ рд╣реИред XML рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЦреБрд╢ рд░рд╣реЗрдВрдЧреЗ тАЭ
рдпрд╣ рдХрдерди - рдкреНрд░рд╢реНрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ - рдЕрддреНрдпрдзрд┐рдХ рднреНрд░рд╛рдордХ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдХреЗ рдмреАрдЪ рдХрд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЖрдзреБрдирд┐рдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреИрд╕реЗ
рд╣реЛрддреА рд╣реИ ред
"рдирд┐рдпрдорд┐рдд" рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
рдФрдкрдЪрд╛рд░рд┐рдХ рднрд╛рд╖рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдВрджрд░реНрдн
рдореЗрдВ , рдХрд┐рд╕реА рдЪреАрдЬ рдХреЛ "рдирд┐рдпрдорд┐рдд" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдпрдо рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрддрд╛ рд╣реИ:
B -> a
B -> aC
B -> ╬╡
рдпрд╣рд╛рдВ рдкреНрд░рддреАрдХ
->
рдХреЛ "рдмрд╛рдИрдВ рдУрд░ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдиреА рдкрд╣рд▓рд╛ рдирд┐рдпрдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдзреНрд╡рдирд┐ рдХрд░реЗрдЧрд╛: "
B
рдХреЛ" рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдХрд╛ - "
B
рдХреЛ
aC
рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ", рдФрд░ рддреАрд╕рд░рд╛ - "
B
рдХреЛ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" (the рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЪрд░рд┐рддреНрд░ рд╣реИ)ред
рд▓реЗрдХрд┐рди
B
,
C
рдФрд░
a
рдХреНрдпрд╛ рд╣реИрдВ? рдпрд╣ рд╕рд╣рдорддрд┐ рд╣реИ рдХрд┐ рдКрдкрд░реА рдорд╛рдорд▓реЗ рдореЗрдВ рдкрддреНрд░ рддрдерд╛рдХрдерд┐рдд "
рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ " (рд╡рд░реНрдгреЛрдВ рдХреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд
рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ) рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдЪрд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрддреНрд░ "рдЯрд░реНрдорд┐рдирд▓реЛрдВ" (рд╡рд░реНрдгреЛрдВ) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ
рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдФрд░
рдирд╣реАрдВ рддреЛрдбрд╝рд╛
рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдпрд╣ рд╕рдм рдХреБрдЫ рд╕рд╛рд░ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ред
N -> 0
N -> 1
N -> 2
N -> 3
N -> 4
N -> 5
N -> 6
N -> 7
N -> 8
N -> 9
N -> 0N
N -> 1N
N -> 2N
N -> 3N
N -> 4N
N -> 5N
N -> 6N
N -> 7N
N -> 8N
N -> 9N
рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐:
(N) -
... 0 9
... 0 9, (N)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 0 рд╕реЗ 9 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдВ рдЯрд░реНрдорд┐рдирд▓ рд╣реЛрдВрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рдирд╣реАрдВ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдПрди рдХреЗрд╡рд▓ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╣реЛрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЖрдЧреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
рдпрджрд┐ рдЖрдк рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рддреБрд▓рдирд╛ рдЙрдкрд░реНрдпреБрдХреНрдд рдирд┐рдпрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд░реВрдкреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡реЗ рджрд┐рдП рдЧрдП рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ рджрд╕ рдирд┐рдпрдо - рдлреЙрд░реНрдо
B -> a
, рдФрд░ рджреВрд╕рд░рд╛ рджрд╕ - рдлреЙрд░реНрдо
B -> aC
ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг
рдирд┐рдпрдорд┐рдд рд╣реИ ред
рдПрдХ рдФрд░ рдмрд╛рдд рдЬрд┐рд╕ рдкрд░ рдЖрдк рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдЗрддрдиреА рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдлреВрд▓рд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛?
рдФрд░ рдлрд┐рд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреГрд╢реНрдп рдкрд░ рдЖрддреА рд╣реИ: рдКрдкрд░ рд╡реНрдпрд╛рдХрд░рдг regexp
[0-9]+
(рдЬреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди
рдХрд┐рд╕реА рднреА рдирд┐рдпрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред
рдХреНрдпрд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рддреЛ, рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╢реНрди рдЙрдарддрд╛ рд╣реИ: рдХреНрдпрд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╛ рд╡реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд╖рдо рд╣реИрдВ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╣рд╛рдВ
рдФрд░ рдирд╣реАрдВ рд╣реИред
рдФрдкрдЪрд╛рд░рд┐рдХ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдЕрд░реНрде рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред
рд▓реЗрдХрд┐рди рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ "рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рд╡реЗ рдЕрдкрдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд
рд╡реНрдпреБрддреНрдкрдиреНрди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпреЗ regexp рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдпрдорд┐рддрддрд╛ рдХреА рдореВрд▓ рдзрд╛рд░рдгрд╛ рд╕реЗ рдмрд╣реБрдд рд╕рддрд╣реА рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
рд░реЗрдЧреЗрдХреНрд╕ рдХреА рдХреЛрдИ рднреА рдЖрдзреБрдирд┐рдХ рдХрд┐рд╕реНрдо рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдХрд┐ рдФрд░ рдЕрдзрд┐рдХ рд╡рд░реНрдгрди рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ regexp рдХреЗ PCRE рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЬрд╛рдирддрд╛ рд╣реВрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ PHP рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдХрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рднрд╛рд╖рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо
рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рднрд╛рд╖рд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ
рдЪреЙрдореНрд╕реНрдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реЛрдЧрд╛ :

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдФрдкрдЪрд╛рд░рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдирд┐рдпрдорд┐рдд рднрд╛рд╖рд╛ (рдкреНрд░рдХрд╛рд░ 3) - рд╕рдмрд╕реЗ рдХрдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА, рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рднрд╛рд╖рд╛ (рдЯрд╛рдЗрдк 2), тАЛтАЛрд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛ (рдЯрд╛рдЗрдк 1) рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рдЕрд╕реАрдорд┐рдд рднрд╛рд╖рд╛рдПрдВ (рдкреНрд░рдХрд╛рд░) 0)ред
рдЪреЙрдореНрд╕реНрдХреА рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд╕реНрд╡реАрд░ рдореЗрдВ рдЫреЛрдЯреЗ рдмрдХреНрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдбрд╝реЗ рдмрдХреНрд╕реЗ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВред рдпрд╛рдиреА рдХреЛрдИ рднреА рдирд┐рдпрдорд┐рдд рднрд╛рд╖рд╛ рднреА рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ!)ред
рддреЛ, рдЪрд▓реЛ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рдкрд╛рдпрджрд╛рди рдКрдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рднреА рдирд┐рдпрдорд┐рдд рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИ?
(рдЕрдиреБрд╕реНрдорд╛рд░рдХ: рдЬрдм рдореИрдВ "рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐" рдХрд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЕрд░реНрде рдореЗрдВ рд╣реИрдВ, рдФрд░ рдФрдкрдЪрд╛рд░рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВ)ред
рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░: рд╣рд╛рдБ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ!
рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
{a^nb^n, n>0}
, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛
b
"ред (PCRE) рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП rexxp рд╣реЛрдЧрд╛:
/^(a(?1)?b)$/
рдпрд╣ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
(?1)
рдкрд╣рд▓реА рдЙрдкрдкрдЯреНрдЯреА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ -
(a(?1)?b)
ред рдЗрд╕рд▓рд┐рдП, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ,
(?1)
рдЙрдкрдорд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ:
/^(a(?1)?b)$/
/^(a(a(?1)?b)?b)$/
/^(a(a(a(?1)?b)?b)?b)$/
/^(a(a(a(a(?1)?b)?b)?b)?b)$/
# and so on
рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ
a
рдФрд░
b
рдХреА рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред
рдирддреАрдЬрддрди, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЧреИрд░-рдирд┐рдпрдорд┐рдд, рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡реЗ рдЙрди рд╕рднреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдкрд╣рд▓реЗ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрдЦреЗрдВред
рдПрдХ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ, рд╕рднреА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдпрдореЛрдВ рдХрд╛ рд░реВрдк рд╣реИ:
A -> ╬▓
рдпрд╣рд╛рдБ
A
рдлрд┐рд░ рд╕реЗ рдПрдХ рдЧреИрд░-рдкреНрд░рддреАрдХ рдЪрд┐рдиреНрд╣ рд╣реИ, рдФрд░ als рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдФрд░ рдЧреИрд░-рдордзреНрдпрд╕реНрдереЛрдВ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдирд┐рдпрдо рдореЗрдВ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдЕрдкрд░рд┐рдореЗрдп рдФрд░ рджрд╛рдИрдВ рдУрд░ рдордирдорд╛рдиреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддреА рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
function_declaration -> T_FUNCTION is_ref T_STRING '(' parameter_list ')' '{' inner_statement_list '}' is_ref -> '&' is_ref -> ╬╡ parameter_list -> non_empty_parameter_list parameter_list -> ╬╡ non_empty_parameter_list -> parameter non_empty_parameter_list -> non_empty_parameter_list ',' parameter
рдпрд╣ рдПрдХ PHP рд╡реНрдпрд╛рдХрд░рдг (рдмрд╕ рдХреБрдЫ рд╕рд░рд▓ рдирд┐рдпрдо) рд╕реЗ рдПрдХ рдЕрдВрд╢ рд╣реИред рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗ рдЙрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдПрдХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ T_SOMETHING рдирд╛рдо рднреА рдЯрд░реНрдорд┐рдирд▓ рд╡рд░реНрдг рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░
рдЯреЛрдХрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реЗ рдЕрдзрд┐рдХ рдЕрдореВрд░реНрдд рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, T_FUNCTION рдХреАрд╡рд░реНрдб рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдФрд░ T_STRING рдЯреЛрдХрди рд▓реЗрдмрд▓ рд╣реИ (рдЬреИрд╕реЗ getUserById рдпрд╛ some_other_name)ред
рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдЯрд┐рд▓ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рд╣реИрдВред рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд╣реА HTML рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╡рд╛рд▓ рдкрд░ рд▓реМрдЯрдирд╛: рдХреНрдпрд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рддрд░рд╣ рд╕рднреА рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХреЛ рдмрд╛рдВрдз рд╕рдХрддреА рд╣реИ? рдлрд┐рд░ рд╕реЗ рдЬрд╡рд╛рдм рд╣рд╛рдБ рд╣реИ!
рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рдж рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ (рдХрдо рд╕реЗ рдХрдо рдкреАрд╕реАрдЖрд░рдИ рдФрд░ рдЗрд╕реА рддрд░рд╣) рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рди рд╣реИ:
/ (?(DEFINE) (?<addr_spec> (?&local_part) @ (?&domain) ) (?<local_part> (?&dot_atom) | (?"ed_string) | (?&obs_local_part) ) (?<domain> (?&dot_atom) | (?&domain_literal) | (?&obs_domain) ) (?<domain_literal> (?&CFWS)? \[ (?: (?&FWS)? (?&dtext) )* (?&FWS)? \] (?&CFWS)? ) (?<dtext> [\x21-\x5a] | [\x5e-\x7e] | (?&obs_dtext) ) (?<quoted_pair> \\ (?: (?&VCHAR) | (?&WSP) ) | (?&obs_qp) ) (?<dot_atom> (?&CFWS)? (?&dot_atom_text) (?&CFWS)? ) (?<dot_atom_text> (?&atext) (?: \. (?&atext) )* ) (?<atext> [a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+ ) (?<atom> (?&CFWS)? (?&atext) (?&CFWS)? ) (?<word> (?&atom) | (?"ed_string) ) (?<quoted_string> (?&CFWS)? " (?: (?&FWS)? (?&qcontent) )* (?&FWS)? " (?&CFWS)? ) (?<qcontent> (?&qtext) | (?"ed_pair) ) (?<qtext> \x21 | [\x23-\x5b] | [\x5d-\x7e] | (?&obs_qtext) ) # comments and whitespace (?<FWS> (?: (?&WSP)* \r\n )? (?&WSP)+ | (?&obs_FWS) ) (?<CFWS> (?: (?&FWS)? (?&comment) )+ (?&FWS)? | (?&FWS) ) (?<comment> \( (?: (?&FWS)? (?&ccontent) )* (?&FWS)? \) ) (?<ccontent> (?&ctext) | (?"ed_pair) | (?&comment) ) (?<ctext> [\x21-\x27] | [\x2a-\x5b] | [\x5d-\x7e] | (?&obs_ctext) )
рдЖрдк рдЬреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╡рд╣
RFC 5322 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдИрдореЗрд▓ рдкрддреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдпрд╣ RFC рд╕реЗ рдмреАрдПрдирдПрдл рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреАрд╕реАрдЖрд░рдИ рд╕рдордЭрддрд╛ рд╣реИред
рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ: рд╕рднреА рдирд┐рдпрдо рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ DEFINE рдХрдерди рдореЗрдВ рд▓рд┐рдкрдЯреА рд╣реБрдИ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рд╕рднреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рд╕реЗ рд╕реАрдзрд╛ рдореЗрд▓ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдмрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓
^(?&addr_spec)$
рд╣рд┐рд╕реНрд╕рд╛ рдмрд╣реБрдд рд╣реА рдЕрдВрдд рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдирд┐рдпрдореЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ "рдирд┐рдпрдо" рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрдк-рд╕рдореВрд╣ рд╣реИрдВред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ
(a(?1)?b)
1
рдХреЛ рдкреНрд░рдердо рдЙрдк-рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдЙрдкрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдирд╛рдордХрд░рдг рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрдердХ рдирд╛рдо рджрд┐рдП рдЧрдП рд╣реИрдВред рддреЛ
(?<xyz> ...)
xyz
рдирд╛рдордХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
(?&xyz)
- рдЗрд╕рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдКрдкрд░ рджреА рдЧрдИ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
x
рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрдВрдЬрди рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдиреЗ рдФрд░
#
-рд╕реНрдЯрд╛рдЗрд▓ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЕрдкрдиреЗ regexp рдХреЛ рдмреЗрд╣рддрд░ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдордЭ рд╕рдХреЗрдВред (рдИ-рдореЗрд▓ рдкрддреЗ рдХреЗ рд▓рд┐рдП
рдЗрд╕ regexp RFC 822 рдХреЗ рд╡рд┐рдкрд░реАрдд ...)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрд░реЛрдХреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрдкрдХреЛ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╕ рдорд╛рдирдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
A -> BC
A -> CD
// becomes
(?<A> (?&B) (?&C)
| (?&C) (?&D)
)
рдПрдХрдорд╛рддреНрд░ рдкрдХрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдмрд╛рдИрдВ рдУрд░ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдЕрдЧрд░ рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХреА рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рднрд╛рд╖рд╛ рд▓реЗрддреЗ рд╣реИрдВ:
non_empty_parameter_list -> parameter non_empty_parameter_list -> non_empty_parameter_list ',' parameter
рдЖрдк рдЗрд╕реЗ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдХрд░рдг-рдЖрдзрд╛рд░рд┐рдд regexp рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд
рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
(?<non_empty_parameter_list>
(?┬╢meter)
| (?&non_empty_parameter_list) , (?┬╢meter)
)
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХреНрдпреЛрдВрдХрд┐
non_empty_parameter_list
рдЕрдкрдиреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдмрд╛рдПрдВ рд╣рд╛рде рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реНрдпрд╛рдХрд░рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдЖрдо рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдПрд▓рдПрдПрд▓рдЖрд░ (1) рдкрд╛рд░реНрд╕рд░реНрд╕, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ рджрд╛рдПрдВ рддрд░рдлрд╛ рд╕реЗ рдмреЗрд╣рддрд░ рдмрд╛рдИрдВ рдУрд░ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд┐рдд рдордд рд╣реЛ, рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╢рдХреНрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдПрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдПрдХ рд╕рд╣реА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмрд╕ рджреЛ рднрд╛рдЧ рд╕реНрд╡реИрдк рдХрд░реЗрдВ:
non_empty_parameter_list -> parameter non_empty_parameter_list -> parameter ',' non_empty_parameter_list
рдЕрдм рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рднреА рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреА рд╣реИ (рдФрд░, рдЗрд╕рд▓рд┐рдП, рд▓рдЧрднрдЧ рд╕рднреА рднрд╛рд╖рд╛рдПрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореБрдарднреЗрдбрд╝ рдХрд░рддреА рд╣реИрдВ)ред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдХрд╛
рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ
рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдкреАрд╕реАрдЖрд░рдИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд░реНрд▓ рдореЗрдВ, рдЬрд╣рд╛рдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдордирдорд╛рдирд╛ рдХреЛрдб рдбрд╛рд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЖрдк рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...)ред
рдлрд┐рд░ рднреА, рдЙрдкрд░реЛрдХреНрдд
DEFINE
regexp рдореЗрд░реЗ рд▓рд┐рдП
рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд┐рдХрд▓рд╛ред рдЕрдВрдд рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЖрдк рдмрд╕ рдХреБрдЫ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдИ-рдореЗрд▓ рдкрддрд╛) рдпрд╛ рдбреЗрдЯрд╛ рдХреЗ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдирд┐рдХрд╛рд▓реЗрдВ (рдФрд░ рдкреВрд░реЗ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рди рдХрд░реЗрдВ)ред рдЬрдЯрд┐рд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ regexp- рдЖрдзрд╛рд░рд┐рдд рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ :)
рдЕрдм рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рджреЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛: рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд╣реА HTML рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрди рдХрд░
рд╕рдХрддреЗ рд╣реИрдВ , рдЬреИрд╕рд╛ рдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рдмрд╕ рджреЛ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛ рднреА HTML рдЖрддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╛рдХреНрдп-рд░рдЪрдирд╛ рд╕рд╣реА
рдирд╣реАрдВ рд╣реИ (рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рдмрдВрдж рднреА рдирд╣реАрдВ рд╣реИ)ред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдмрд╕ рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░
рд╕рдХрддреЗ рдЙрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЖрдк рдЕрдкрдиреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдмреНрд░реЗрдирдлрдХ рдкрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХрд╛рд░рдг рд╣реИрдВ рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣реИ рдирд╛?
рд╡рд┐рд╖рдп рдкрд░ рдореЗрд░реА рд░рд╛рдп рдпрд╣ рд╣реИ: рдЬрд╣рд╛рдВ рднреА рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп HTML рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП DOM рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдЧрд▓рдд HTML рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдкреВрд░реЗ рдмреЛрдЭ рдХреЛ рдЙрдард╛рдПрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рддреЗрдЬ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдХреНрд╕рд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд▓реЛрдЧреЛрдВ рд╕реЗ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTML рдХреЛ рдкрд╛рд░реНрд╕ рди рдХрд░реЗрдВ, рдореИрдВ рдЦреБрдж рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм regexps рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рд╕рдВрдЧ рд╡реНрдпрд╛рдХрд░рдг
рдЕрдм рдЬрдм рд╣рдордиреЗ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рднрд╛рд╖рд╛рдУрдВ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реА рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рдЪреЙрдореНрд╕реНрдХреА рдкрджрд╛рдиреБрдХреНрд░рдо: рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдФрд░ рдХрджрдо рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
рдЙрдирдХреЗ рд▓рд┐рдП, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рдпрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдВрдЧреЗ:
╬▒A╬▓ тЖТ ╬▒╬│╬▓
рдкрд╣рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдпрд╣ рдорд┐рд╢реНрд░рдг рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдХреЛрд░ рдЕрднреА рднреА
A тЖТ ╬│
that рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдмрд╕ рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ
╬▒
рдФрд░
╬▓
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдпреЗ рджреЛрдиреЛрдВ рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдиреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдирд╛рдо рднреА рджрд┐рдпрд╛ рд╣реИ)ред рддреЛ,
A
рдХреЛ рдЕрдм
╬│
рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЗрд╕рдХреЗ рдмрд╛рдИрдВ рдУрд░
╬▒
рдФрд░ рджрд╛рдИрдВ рдУрд░ be рд╣реЛред
рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЛ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдореЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
ab A -> abc
a B c -> a QH c
HB -> HC
рд░реВрд╕реА рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдзреНрд╡рдирд┐ рдХрд░реЗрдЧрд╛:
`A` `c`, , `ab` .
`B` `QH`, , `a` `c` .
`B` `C`, `H` .
рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдПрдВ рдХреБрдЫ рдРрд╕реА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╢рд╛рдпрдж рд╣реА рдХрднреА "рд╕рд╛рдорд╛рдиреНрдп" рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВред рд╡реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд░реНрде рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рддрдерд╛рдХрдерд┐рдд "рдирд░рдо рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдВрджрд░реНрдн рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдг рдХрд┐рддрдиреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВ, рдЖрдЗрдП рдЙрди рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХреЗ рдПрдХ рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реА рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╢рдХреНрддрд┐ рд╣реИ: рдЧреИрд░-рд▓рдШреБ рд╡реНрдпрд╛рдХрд░рдгред
рдЧреИрд░-рд▓рдШреБ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдпрдо рдореЗрдВ
╬▒ ->╬▓
, рдЬрд╣рд╛рдВ
╬▒
рдФрд░ character рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде рдордирдорд╛рдирд╛ рдЪрд░рд┐рддреНрд░ рддрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ: рджрд╛рдИрдВ рдУрд░ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╛рдИрдВ рдУрд░ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
|╬▒| <= |╬▓|
|╬▒| <= |╬▓|
рдХрд╣рд╛рдБ
|x|
рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдЧреИрд░-рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╡реНрдпрд╛рдХрд░рдг рдХрд┐рд╕реА рднреА рдирд┐рдпрдо рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рди рдХрд░реЗрдВред рдпрд╛рдиреА
ABC -> HQ
рдПрдХ рдЕрдорд╛рдиреНрдп рдирд┐рдпрдо рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рдПрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рддреАрди рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдФрд░ рджрд╛рдПрдВ - рдХреЗрд╡рд▓ рджреЛ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдирд┐рдпрдо рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдХрд╛рдлрд┐рд▓рд╛ рдирд┐рдпрдо
HQ -> ABC
рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╛рдИрдВ рдУрд░ рджрд╛рдИрдВ рдУрд░ рдЕрдзрд┐рдХ рд╡рд░реНрдг рд╣реИрдВ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдпреЗ рд░рд┐рд╢реНрддреЗ (рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджреА рдФрд░ рдЧреИрд░-рд▓рдореНрдмреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди) рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╕рд╛рде рдЖрдк рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рдЫреЛрдЯрд╛ рдордд рдХрд░реЛ :)
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рджреЛрдиреЛрдВ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╢рдХреНрддрд┐ рдХреНрдпреЛрдВ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ:
//
AB -> CD
// -
AB -> AX
AX -> YX
YX -> YD
YD -> CD
рдареАрдХ рд╣реИ, рд╡рд╛рдкрд╕ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред рдХреНрдпрд╛ рд╡реЗ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ред рдмреЗрд╢рдХ, рд╡реЗ
рдХреБрдЫ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЙрди
рд╕рднреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджреА рднрд╛рд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ regexps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рднрд╛рд╖рд╛
{a^nb^n, n>0}
рд╕рдВрд╢реЛрдзрди рд▓реЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдКрдкрд░ рдмрд╛рдд рдХреА рдереАред рдЬрдм рдЖрдк рдЗрд╕реЗ
{a^nb^nc^n, n>0}
, рдЕрд░реНрдерд╛рддреН рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рдпрджрд┐
b
рдФрд░
c
рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдХреЗ рдкреВрд░реНрд╡ рдХреА рдорд╛рддреНрд░рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП PCRE regexp рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
/^ (?=(a(?-1)?b)c) a+(b(?-1)?c) $/x
рдпрджрд┐ рд╣рдо рдХрдерди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ
(?=...)
, рддреЛ рдХреЗрд╡рд▓
a+(b(?-1)?c)
рд╣рдорд╛рд░реЗ рдмрд╛рдИрдВ рдУрд░ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдордирдорд╛рдирд╛ рдорд╛рддреНрд░рд╛
a
рд╣реА рдорд╛рддреНрд░рд╛
b
рдФрд░
c
рджреНрд╡рд╛рд░рд╛ рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
(?-1)
- рд╕рдмрдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдВрджрд░реНрдн, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдЕрдВрддрд┐рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдмрдкреИрдЯрд░реНрди"ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИ
(b(?-1)?c)
ред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдирдИ рдЗрдХрд╛рдИ рд╣реИ
(?=...)
ред рдЗрд╕реЗ "рд╢реВрдиреНрдп рдЪреМрдбрд╝рд╛рдИ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рдХрд╛ рд╡рд░реНрдгрди рдПрдХ рдореБрдЦреМрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреЗрдХ рд╕реНрд╡рдпрдВ рд╣реА рдЗрд╕рдХреЗ рдЙрдкрд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рд╣реИред рднрд╛рдЧ
a+(b(?-1)?)
c
a+(b(?-1)?)
рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐
b
рдФрд░
c
рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реИ, рдФрд░
(a(?-1)?b)c
- рдХрд┐
a
рдФрд░
b
рдХреА рдорд╛рддреНрд░рд╛ рд╕рдорд╛рди рд╣реИред рджреЛрдиреЛрдВ рдореБрдЦреМрдЯреЗ рдПрдХ рд╕рд╛рде рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рддреАрди рд╡рд░реНрдг рдПрдХ рд╣реА рд░рд╛рд╢рд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред
рдКрдкрд░ рджрд┐рдП рдЧрдП regexp рдореЗрдВ, рдЖрдк рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдмрдпрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЕрдм рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдпрдо
╬▒A╬▓ тЖТ ╬▒╬│╬▓
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд DEFINE regexp рдирд┐рдпрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
(?<A> (?<= ╬▒ ) ╬│ (?= ╬▓ ) )
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ рдХрд┐
A
saying рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЗрд╕рдХреЗ
╬▒
рдмрд╛рдПрдВ рдФрд░ред
╬▓
рджрд╛рдИрдВ рдУрд░
╬▒
ред
рдЙрдкрд░реЛрдХреНрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдЖрдк рдПрдХ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА рдХрдерди
((?<= ... ))
рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рд╣реИ: рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрдерди рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдкрд╛рда рдХреА рд▓рдВрдмрд╛рдИ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
(?<= a(bc|cd) )
, рд▓реЗрдХрд┐рди рдЖрдк рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
(?<= ab+)
ред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдпрд╛рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдареАрдХ рддреАрди рд╡рд░реНрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░, рдЗрд╕рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рд╣реИред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдерди
ab
,
abb
,
abbbb
рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдмрд╛рдВрдз рд╕рдХрддрд╛ рд╣реИред рдЙрди рд╕рднреА рдХреА рд▓рдВрдмрд╛рдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдЗрдВрдЬрди рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрдм рдорд┐рд▓рд╛рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рд╡реЗ рдмрд╕ рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВред
рдпрд╣ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХреЛ regexps рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЭрдЯрдХрд╛ рд╣реИред рд▓рдЧрднрдЧ рд╕рднреА рдРрд╕реЗ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдореЗрдВ рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА рдХрдердиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪреМрдбрд╝рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджреА рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рд╕реАрдзреЗ regexp рдореЗрдВ рдмрджрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЙрди рд╕рднреА рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рднрд╛рд╖рд╛ {a^nb^nc^n, n>0}
рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рднреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЪрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА рдХрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╢рд╛рдпрдж рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрднрд╡ рд╣реИред рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛редрддреЛ рдЖрдЦрд┐рд░ рд╣рдо рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ? Regexps рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЙрди рд╕рднреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг
рдЪреЙрдореНрд╕реНрдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХрд╛ рдЕрдЧрд▓рд╛ рд╡рд░реНрдЧ рдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рд╣реИред рдЙрдирдХреА рдорджрдж рд╕реЗ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рд╕рднреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рднрд╛рд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВредрдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ, рдЙрд╣, рдЕрд╕реАрдорд┐рдд рд╣реИрдВред рдЙрдирдХреЗ рдЕрдиреБрдорд╛рди рдирд┐рдпрдо ╬▒ -> ╬▓
, рдЬрд╣рд╛рдВ ╬▒
рдФрд░ рдЬрд╣рд╛рдВ ╬▓
рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдг рдХреЗ рддрд╛рд░ рд╣реИрдВредрдЗрд╕рд▓рд┐рдП, рдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХреЗрд╡рд▓ рдЧреИрд░-рд▓рдШреБ рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ "рдЧреИрд░-рдЫреЛрдЯрд╛" рднрд╛рдЧ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ ABC -> HQ
рдПрдХ рд╡реИрдз рдирд┐рдпрдо рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рд▓реЗ рдпрд╣ рдирд╣реАрдВ рдерд╛редрдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХрд┐рддрдиреЗ рд╕рд╣реА рд╣реИрдВ? рдЗрддрдирд╛ рдХрд┐ рд╡реЗ рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ: рд╡реЗ рдЯреНрдпреВрд░рд┐рдВрдЧ-рдкреВрд░реНрдг рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛" рднреА рд╣реИ: рдереВред рдЪреВрдВрдХрд┐ рдпрд╣ рдЯреНрдпреВрд░рд┐рдВрдЧ-рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╕рдХреНрд╖рдо рд╣реИрдВредрдЯреНрдпреВрд░рд┐рдВрдЧ рдкреВрд░реНрдгрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реЗрдЦрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВредрджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдирд░рдХ, рдореИрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╕реАрдорд┐рдд рд╡реНрдпрд╛рдХрд░рдг (рдЬреЛ рдЧреИрд░-рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛) рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛редрд▓реЗрдХрд┐рди рдЕрдм, рдЬрдм рд╣рдо рдЯреНрдпреВрд░рд┐рдВрдЧ рдкреВрд░реНрдгрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:рдмреИрдХрд▓рд┐рдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдирдкреА-рдкреВрд░реНрдг рд╣реИрдВ
рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ: рдмреИрдХрд▓рд┐рдВрдХреНрд╕редрдпрд╛рдиреА
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╕рд░рд▓ regexp рдпреБрдХреНрдд:/^(.+)\1$/
(.+)
рдФрд░ \1
рдПрдХ рд╣реА рдордирдорд╛рдирд╛ рдкрд╛рда рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рдЖрдо рддреМрд░ рдкрд░ \n
рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╡рд╣рд╛рдБ рдХреБрдЫ, рдЬреЛ nth рдЙрдкрдкрдЯреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред" рдпрд╛рдиреА
рдЕрдЧрд░ рдпрд╣ (.+)
рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ foo
, рдпрд╣ рднреА рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд╛ \1
рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ foo
ред рдЗрд╕рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ (.+)\1
рдЕрд░реНрде рд╣реИ "рдХреБрдЫ рдкрд╛рда, рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдХреА рдПрдХ рдкреНрд░рддрд┐ред"рдЗрд╕ regexp рдХрд╛ рд╡рд░реНрдгрди "рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рднрд╛рд╖рд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИредрдЗрд╕реА рдкреНрд░рдХрд╛рд░, рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЕрдиреНрдп рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрд╕ рдорд╣рд╛рди рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ редрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХ рдмреИрдХрд▓рд┐рдВрдХ (рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЙрдкрдкрдЯреНрдЯ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛) рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╢рдХреНрддрд┐ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЗрддрдирд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдПрдирдкреА-рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИредрдПрдирдкреА-рдкреВрд░реНрдг рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдПрдирдкреА-рдкреВрд░реНрдгрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ "рдореБрд╢реНрдХрд┐рд▓" рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВред рдПрдирдкреА-рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЯреНрд░реИрд╡рд▓рд┐рдВрдЧ рд╕реЗрд▓реНрд╕рдореИрди рдкреНрд░реЙрдмреНрд▓рдо (рдЯреАрдПрд╕рдкреА), рдмреВрд▓рд┐рдпрди рдлреЙрд░реНрдореВрд▓рд╛ рд╕реИрдЯрд┐рд╕реНрдлреИрдХреНрд╢рди рдкреНрд░реЙрдмреНрд▓рдо (рд╕реИрдЯ) рдФрд░ рдж рдиреИрдХрдкреИрдХ рдкреНрд░реЙрдмреНрд▓рдо (рдмреАрдХреЗрдкреА)редрдПрдХ рд╕рдорд╕реНрдпрд╛ рдПрдирдкреА-рдкреВрд░реНрдг рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╢рд░реНрдд рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдирдкреА-рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдПрдирдкреА-рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛рдПрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдирд┐рдореЗрдп рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рд╕рднреА рдХрд╛ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛редрдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдХреЛрдИ рдПрдирдкреА-рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдХрд╛ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рдирд╡рддрд╛ рдХреЗ рд▓рдЧрднрдЧ рд╕рднреА рдЬрдЯрд┐рд▓ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рдЭрдкрдЯреНрдЯрд╛ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рд╕рднреНрдпрддрд╛ рдХрд╛ рдЕрдВрддредрдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдмреИрдХрд▓рд┐рдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдПрдирдкреА-рдкреВрд░реНрдг рд╣реИрдВ, рдЖрдк рдмрд╕ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдПрдирдкреА-рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдмрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ 3-рд╕реАрдПрдирдПрдл рд╕реИрдЯ рдХрд╛рд░реНрдп рдХреЛ рдЪреБрдирд╛ред3-CNF SAT рдХрд╛ рдЕрд░реНрде рд╣реИ "3-рд╕рдВрдпреЛрдЬреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдмреВрд▓рд┐рдпрди рдлрд╝рд╛рд░реНрдореБрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рд╕рдорд╕реНрдпрд╛" рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд░рд▓ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рд░реНрдо рдХрд╛ рдПрдХ рдмреВрд▓рд┐рдпрди рдлрд╛рд░реНрдореВрд▓рд╛ рд╣реИ:(!$a || $b || $d)
&& ( $a || !$c || $d)
&& ( $a || !$b || !$d)
&& ( $b || !$c || !$d)
&& (!$a || $c || !$d)
&& ( $a || $b || $c)
&& (!$a || !$b || !$c)
рдЗрд╕рдореЗрдВ AND рдСрдкрд░реЗрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХреА рдЧрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ OR рдСрдкрд░реЗрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддреАрди рдЪрд░ (рдпрд╛ рдЙрдирдХреЗ рдирд┐рд╖реЗрдз) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред 3-CNF SAT рдкреВрдЫрддрд╛ рд╣реИ: рдХреНрдпрд╛ рдЗрд╕ рдмреВрд▓рд┐рдпрди рдлреЙрд░реНрдореВрд▓рд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ (рдЬреИрд╕реЗ, рд╕рдЪ)?рдЙрдкрд░реЛрдХреНрдд рдмреВрд▓рд┐рдпрди рд╕реВрддреНрд░ рдХреЛ рдирд┐рдореНрди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: <?php $regex = '/^ (x?)(x?)(x?)(x?) .* ; (?: x\1 | \2 | \4 ), (?: \1 | x\3 | \4 ), (?: \1 | x\2 | x\4 ), (?: \2 | x\3 | x\4 ), (?: x\1 | \3 | x\4 ), (?: \1 | \2 | \3 ), (?: x\1 | x\2 | x\3 ), $/x'; $string = 'xxxx;x,x,x,x,x,x,x,'; var_dump(preg_match($regex, $string, $matches)); var_dump($matches);
рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛ $matches
:array(5) {
[0]=> string(19) "xxxx;x,x,x,x,x,x,x,"
[1]=> string(1) "x"
[2]=> string(1) "x"
[3]=> string(0) ""
[4]=> string(0) ""
}
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕реВрддреНрд░ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ $a = true
, $b = true
, $c = false
рдФрд░ $d = false
редрдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ: рдХрд┐рд╕реА рднреА рддреАрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ x
рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдЕрдЧрд░ рдЖрдк рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реИ (?: \1 | x\3 | \4 )
regexps рдореЗрдВ рд╣реИ, рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗрд╡рд▓ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ \1
- рдпрд╣ рд╣реИ x
(рд╕рд╣реА), рдпрд╛ \3
- рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЧрд▓рдд), рдпрд╛ \4
- рдПрдХ x
(рд╕рд╣реА)редрдЕрдм рдпрд╣ рдЗрдВрдЬрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдпрд╛ рддреЛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдХрд░ рджреЗрддрд╛ рд╣реИредрд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛
рдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдереЛрдбрд╝рд╛ рд▓рдВрдмрд╛ рдерд╛, рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:- , , .
- ( PCRE) - . HTML, .
- - .
- NP . NP , .
рд▓реЗрдХрд┐рди рдпрд╣ рдордд рднреВрд▓реЛ: рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдирд┐рдпрдорд┐рдд рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде HTML рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдФрд░ рджреВрд╕рд░реЛрдВ рдореЗрдВ, рдпрд╣ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИредрдмрд╕ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрд╛рдп рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдПрдХреНрд╕-рд╕рдВрд╢реЛрдзрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛, рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ regexp рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬрдЯрд┐рд▓ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд╛рдл рдФрд░ рдкрдардиреАрдп рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП DEFINE рдХрдердиреЛрдВ рдФрд░ рдирд╛рдорд┐рдд рдЙрдкрдкрдЯреНрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдпрд╛рдж рд░рдЦреЗрдВредрд╡рд╣ рд╕рдм рд╣реИред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ, рдХреГрдкрдпрд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдореИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред