Π Π°Π±ΠΎΡ‚Π° с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ программирования Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ постоянно приходится ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ очистки, форматирования ΠΈΠ»ΠΈ трансформации тСкстовых массивов, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ‹ символов β€” это Π½Π΅ просто космСтичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π° критичСски Π²Π°ΠΆΠ½Ρ‹ΠΉ этап Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ обработанная строка ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΏΡ€ΠΈ сохранСнии Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

Π’ конфигурациях любого уровня слоТности, ΠΎΡ‚ простых справочников Π΄ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ERP-систСм, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ привСсти Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ тСкст ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ стандарту. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ удалСния Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Π·Π°ΠΌΠ΅Π½Ρ‹ спСцсимволов Π½Π° допустимыС Π·Π½Π°ΠΊΠΈ ΠΈΠ»ΠΈ подстановки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² шаблон. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнтарий для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ возмоТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСгулярными выраТСниями. ПониманиС нюансов ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Базовая функция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

Π‘Π°ΠΌΡ‹ΠΌ распространСнным ΠΈ простым инструмСнтом для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ тСкста являСтся встроСнная функция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для поиска всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ подстроки ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΡ… Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Бинтаксис этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ясСн ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ слоТных конструкций, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. ИспользованиС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния Π΄Π°ΠΆΠ΅ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ основных Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку, ΠΈΡΠΊΠΎΠΌΡƒΡŽ подстроку ΠΈ строку Π·Π°ΠΌΠ΅Π½Ρ‹. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда являСтся новая строка, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ строковый Ρ‚ΠΈΠΏ Π² 1Π‘ являСтся нСизмСняСмым (immutable). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ исходная пСрСмСнная Π½Π΅ измСнится сама ΠΏΠΎ сСбС, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Рассмотрим практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ очистки Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… символов. Часто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ вводят Π½ΠΎΠΌΠ΅Ρ€Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ скобки, Ρ‚ΠΈΡ€Π΅ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Для сохранСния Π² Π±Π°Π·Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ Ρ†ΠΈΡ„Ρ€. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°ΠΌΠ΅Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ символа.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠΠΎΠΌΠ΅Ρ€ = "+7 (999) 123-45-67";

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠΠΎΠΌΠ΅Ρ€, " ", "");

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ, "(", "");

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ, ")", "");

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ, "-", "");

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ, "+", "");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ); // Π’Ρ‹Π²ΠΎΠ΄: 79991234567

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, извСстный ΠΊΠ°ΠΊ Β«Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π·Π°ΠΌΠ΅Π½Β», эффСктивСн для нСбольшого количСства символов. Однако, Ссли список замСняСмых Π·Π½Π°ΠΊΠΎΠ² Π²Π΅Π»ΠΈΠΊ, ΠΊΠΎΠ΄ становится Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ рСгулярныС выраТСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π½ΠΈΠΆΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для Ρ€Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ остаСтся эталоном простоты ΠΈ надСТности.

πŸ’‘

ΠŸΡ€ΠΈ частом использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, создавая Π½ΠΎΠ²ΡƒΡŽ строку Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ нСобходимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сборщик мусора.

Π—Π°ΠΌΠ΅Π½Π° спСцсимволов ΠΈ экранированиС

ΠžΡΠΎΠ±ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдставляСт Ρ€Π°Π±ΠΎΡ‚Π° со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ пСрСнос строки, табуляция ΠΈΠ»ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π’ языкС 1Π‘ эти символы часто ΠΈΠΌΠ΅ΡŽΡ‚ свои константы ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния. НапримСр, символ пСрСноса строки обозначаСтся ΠΊΠ°ΠΊ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ, Π° табуляция β€” Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Π°Π±. ΠŸΡ€ΡΠΌΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ этих символов Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ синтаксичСским ошибкам ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тСкста, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ ΠΈΠ· Π²Π΅Π±-сСрвисов ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² CSV/Excel, часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΎΠΌΠ°ΡŽΡ‚ структуру Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π». ИспользованиС констант ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ пСрСносимым ΠΈ понятным для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… систСму.

  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ β€” ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку (Line Feed/Carriage Return).
  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Π°Π± β€” символ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ табуляции.
  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПП β€” символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° страницы (Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π² старых Ρ„Π°ΠΉΠ»Π°Ρ…).
  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.НПП β€” Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π», часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² тСкстС ΠΈΠ· Word.

Для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ строки, которая сама Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ΅ΠΌ удвоСния ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ саму ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π», Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π΄Π²Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ подряд. Π­Ρ‚ΠΎ стандартноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ экранирования Π² 1Π‘, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² парсСра ΠΊΠΎΠ΄Π°.

Π’Π΅ΠΊΡΡ‚Π‘ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ = "Он сказал: ""ΠŸΡ€ΠΈΠ²Π΅Ρ‚"" ΠΈ ΡƒΡˆΠ΅Π»";

// Π—Π°ΠΌΠ΅Π½Π° Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π’Π΅ΠΊΡΡ‚Π‘ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, """", "'");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚); // Он сказал: 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚' ΠΈ ΡƒΡˆΠ΅Π»

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹?

НСразывныС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.НПП) Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΌΡ‹ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π½Π°ΠΉΡ‚ΠΈ подстроку "Иванов" Π² Π±Π°Π·Π΅, Π³Π΄Π΅ фамилия записана с Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ поиск ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².

ИспользованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Когда Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тСкста выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ простой Π·Π°ΠΌΠ΅Π½Ρ‹ фиксированных подстрок, Π½Π° сцСну выходят рСгулярныС выраТСния. Π’ 1Π‘ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС. Π­Ρ‚ΠΎΡ‚ инструмСнт позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ слоТныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ поиска, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мСтасимволы, ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ классы символов. Π­Ρ‚ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ инструмСнт для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ email, Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· нСструктурированного тСкста.

Основной ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π·Π°ΠΌΠ΅Π½Ρ‹ Π² этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ β€” Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку ΠΈ строку Π·Π°ΠΌΠ΅Π½Ρ‹. Π’ строкС Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылки Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°Ρ…Π²Π°Ρ‚Π°, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ части Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ тСкста мСстами. Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ возмоТности для слоТной трансформации Π΄Π°Π½Π½Ρ‹Ρ…, нСдоступной ΠΏΡ€ΠΈ использовании стандартной Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Рассмотрим Π·Π°Π΄Π°Ρ‡Ρƒ форматирования Π΄Π°Ρ‚Ρ‹. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ строка Π²ΠΈΠ΄Π° "2023.10.05", Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ привСсти Π΅Ρ‘ ΠΊ Π²ΠΈΠ΄Ρƒ "05.10.2023". Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярного выраТСния ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ†ΠΈΡ„Ρ€, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ, ΠΈ вывСсти ΠΈΡ… Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

Π¨Π°Π±Π»ΠΎΠ½ = "(\d{4})\.(\d{2})\.(\d{2})";

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС(Π¨Π°Π±Π»ΠΎΠ½);

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ”Π°Ρ‚Π° = "2023.10.05";

// $1, $2, $3 β€” ссылки Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°Ρ…Π²Π°Ρ‚Π° Π² скобках

НоваяДата = Π Π΅Π³Π’Ρ‹Ρ€.Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ”Π°Ρ‚Π°, "$3.$2.$1");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(НоваяДата); // 05.10.2023

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° РСгулярноСВыраТСниС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚ рСсурсов, поэтому Π½Π΅ стоит ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ссли шаблон Π½Π΅ мСняСтся. Π›ΡƒΡ‡ΡˆΠ΅ вынСсти объявлСниС Π² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, синтаксис рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² 1Π‘ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт стандарту.NET, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Microsoft.

πŸ’‘

РСгулярныС выраТСния ΠΌΠΎΡ‰Π½Π΅Π΅ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠŸΠΎΠΈΡΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Одной ΠΈΠ· самых частых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ мноТСствСнных ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ½Ρ†Π΅ строки, Π° Ρ‚Π°ΠΊΠΆΠ΅ смСшСниС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π² 1Π‘ сущСствуСт Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² связкС с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ. Ѐункция Π‘Ρ‚Ρ€Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ удаляСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΏΠΎ краям, Π½ΠΎ оставляСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ привСсти тСкст ΠΊ «чСловСчСскому» Π²ΠΈΠ΄Ρƒ, часто трСбуСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π΅Π». Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, ΠΏΠΎΠΊΠ° Π² строкС Π΅ΡΡ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярного выраТСния. РСгулярный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ здСсь Π±ΠΎΠ»Π΅Π΅ элСгантСн ΠΈ выполняСтся Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄.

Ѐункция / ΠœΠ΅Ρ‚ΠΎΠ΄ НазначСниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
Π‘Ρ‚Ρ€Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹() УдаляСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ слСва ΠΈ справа " ВСкст " β†’ "ВСкст"
Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(.., " ", " ") ЗамСняСт Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π½Π° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ "А Π‘" β†’ "А Π‘"
Π Π΅Π³Π’Ρ‹Ρ€.Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ("\s+", " ") ЗамСняСт Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы (Ρ‚Π°Π±Ρ‹, пСрСносы) Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π» "А\t\nΠ‘" β†’ "А Π‘"
Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(.., Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.НПП, " ") ЗамСняСт Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ "А[НПП]Π‘" β†’ "А Π‘"

КомплСксная очистка тСкста ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя нСсколько этапов. Π‘Π½Π°Ρ‡Π°Π»Π° Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ всС спСцифичСскиС ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π», Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ лишниС повторСния, ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ±Ρ€Π΅Π·Π°ΡŽΡ‚ΡΡ края. Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ «мусор», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ полнотСкстовому поиску ΠΈΠ»ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ строк.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с полями Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ… часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ для автоматичСской ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ систСма сама исправляСт ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π½Π΅ трСбуя Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

πŸ“Š Какой способ очистки ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» с Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ
РСгулярныС выраТСния
Π‘Ρ‚Ρ€Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ + Ρ†ΠΈΠΊΠ»
Π’Π½Π΅ΡˆΠ½ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π—Π°ΠΌΠ΅Π½Π° Π² массивах ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Ρ€Π΅Π΄ΠΊΠΎ приходится ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ строку. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² коллСкциях Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Массив, Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ЭффСктивная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… структур Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Для Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ являСтся использованиС запроса, Ссли Π·Π°ΠΌΠ΅Π½Π° Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°, ΠΈΠ»ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄ строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅. ΠŸΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Ρ‡Π΅Ρ€Π΅Π· индСкс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ наглядно.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ВСкущаяБтрока Из Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π¦ΠΈΠΊΠ»

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ"

БтарыйВСкст = ВСкущаяБтрока.ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ;

// ВыполняСм Π·Π°ΠΌΠ΅Π½Ρƒ

НовыйВСкст = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(БтарыйВСкст, "старый", "Π½ΠΎΠ²Ρ‹ΠΉ");

// ЗаписываСм ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

ВСкущаяБтрока.ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ = НовыйВСкст;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Если объСм Π΄Π°Π½Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΠΊ (сотни тысяч строк), Ρ†ΠΈΠΊΠ» Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния Π·Π°ΠΌΠ΅Π½Ρ‹ срСдствами SQL Π½Π° сторонС сСрвСра Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ хранСния, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с пСриодичСскими Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ().

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ массовой Π·Π°ΠΌΠ΅Π½Π΅ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСрывания Π΄ΠΎΠ»Π³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘Π΅Π· Π²Ρ‹Π·ΠΎΠ²Π° ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ() Π² Ρ†ΠΈΠΊΠ»Π΅ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Β«Π·Π°Π²ΠΈΡΠ½ΡƒΡ‚ΡŒΒ», ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ смоТСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ процСсс.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ хранятся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки, Π½ΠΎ ΠΈ числа ΠΈΠ»ΠΈ Π΄Π°Ρ‚Ρ‹, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠŸΠ΅Ρ€Π΅Π΄ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ значСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π’ΠΈΠΏΠ—Π½Ρ‡ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π’ΠΈΠΏ.

ЧастыС ошибки ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками Π² 1Π‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ ошибки, связанныС с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ нСизмСняСмости строк. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку Β«Π½Π° мСстС» Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. КаТдая опСрация Π·Π°ΠΌΠ΅Π½Ρ‹ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти. Π’tight-Ρ†ΠΈΠΊΠ»Π°Ρ… это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти ΠΈ частым запускам сборщика мусора, Ρ‡Ρ‚ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ распространСнный нюанс β€” ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°. ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с внСшними систСмами (особСнно старыми ΠΈΠ»ΠΈ написанными Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках) ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ символов. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ «кракозябры». Π—Π°ΠΌΠ΅Π½Π° Π² этом случаС Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°.

  • πŸ”΄ Ошибка: Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСгистра. Ѐункция БтрНайти ΠΈ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру. Для Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ строки ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ рСгистру Ρ‡Π΅Ρ€Π΅Π· БтрНиТ ΠΈΠ»ΠΈ Π‘Ρ‚Ρ€Π’Π²Π΅Ρ€Ρ….
  • πŸ”΄ Ошибка: БСсконСчный Ρ†ΠΈΠΊΠ». Если Π²Ρ‹ замСняСтС подстроку Π½Π° саму сСбя ΠΈΠ»ΠΈ Π½Π° строку, которая содСрТит ΠΈΡΠΊΠΎΠΌΡƒΡŽ подстроку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΌΠ΅Π½Π° "Π°" Π½Π° "Π°Π±"), Π² Ρ†ΠΈΠΊΠ»Π΅ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСсконСчному росту строки ΠΈ падСнию систСмы.
  • πŸ”΄ Ошибка: Π›ΠΈΡˆΠ½ΠΈΠ΅ прСобразования Ρ‚ΠΈΠΏΠΎΠ². НС Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ число Π² строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ Ρ†ΠΈΡ„Ρ€Ρƒ, Ссли это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ матСматичСски, хотя для строк это Ρ€Π΅Π΄ΠΊΠΈΠΉ случай.

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ слоТных прСобразованиях рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π‘ΡƒΡ„Π΅Ρ€Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ…Π”Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Однако для Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… бизнСс-Π·Π°Π΄Π°Ρ‡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ стандартных строковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΏΠΎΠ»Π½Π΅ достаточно ΠΏΡ€ΠΈ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠΌ использовании.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. ВсСгда тСстируйтС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Ρ‚ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°, особСнно Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ возмоТности рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ строковых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

FAQ: Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ подстроки, Π° Π½Π΅ всС?

Ѐункция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ замСняСт всС вхоТдСния. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния Ρ‡Π΅Ρ€Π΅Π· БтрНайти, Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° Π΄Π²Π΅ части (Π΄ΠΎ ΠΈ послС Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π›Π΅Π² ΠΈ ΠŸΡ€Π°Π², ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ строку, вставив Π·Π°ΠΌΠ΅Π½Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ частями.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² строкС Π·Π°ΠΌΠ΅Π½Ρ‹ рСгулярного выраТСния?

Π”Π°, Π² строкС Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° РСгулярноСВыраТСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструкции Π²ΠΈΠ΄Π° $1, $2 для ссылок Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°Ρ…Π²Π°Ρ‚Π°. Однако ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСшнСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ 1Π‘ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² шаблон Π·Π°ΠΌΠ΅Π½Ρ‹ нСльзя, Π½ΡƒΠΆΠ½ΠΎ сначала ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ символ пСрСноса строки?

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ символ "\n" ΠΊΠ°ΠΊ тСкст. Π’ 1Π‘ пСрСнос строки β€” это константа Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ. НуТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄: Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкст, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ, ""). Π’Π°ΠΊΠΆΠ΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ОБ состав символов пСрСноса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ (CR+LF ΠΈΠ»ΠΈ LF), поэтому ΠΈΠ½ΠΎΠ³Π΄Π° приходится ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Πš.

Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС спСцсимволы Π² строкС Π½Π° ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅?

Π‘Π°ΠΌΡ‹ΠΉ быстрый способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡ‰Π΅Ρ‚ всС символы, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Π¨Π°Π±Π»ΠΎΠ½: [^a-zA-Z0-9Π°-яА-ЯёЁ]. Π—Π°ΠΌΠ΅Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ символ подчСркивания _.

ВлияСт Π»ΠΈ Π·Π°ΠΌΠ΅Π½Π° строк Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…?

Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС опСрация Π·Π°ΠΌΠ΅Π½Ρ‹ строки Π² памяти Π½Π΅ создаСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ записи ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ()). Однако долгая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строк Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ дольшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ косвСнно влияСт Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.