символи узагальнення
Думаю, все з вас хоч коли-небудь використовували програму Microsoft Word. І, напевно, все користувалися в Ворді пошуком або заміною. А ось про те, що заміни бувають дуже складні, що за допомогою заміни можна виробляти незвичайні операції, знає далеко не кожен.
Навіть в звичайному режимі заміни дозволяють робити хитрі операції. Але от якщо включити режим "символи узагальнення" (переклад англійського "wildards"), то можна творити чудеса. Про це ми і поговоримо в цій статті. До речі, якщо цікавитеся, то ці самі "wildcards" дуже близькі до так званим "регулярними виразами" ( "regular expressions"), що використовуються при пошуку та заміни у багатьох програмах для автоматичної обробки тексту.
Давайте вирішимо кілька завдань, які можуть знадобитися, наприклад, при складанні покажчика.
Залишити на сторінці тільки слова, що починаються з великих літер.

Відкриваємо вікно пошуку і заміни, виставляємо режим "символи узагальнення" і робимо заміну рядка <[а-я]*> на ніщо (залишаємо поле "замінити на" порожнім). Це в разі українського тексту, в разі англійської піде <[a-z]*>. Ця заміна видаляє всі слова, що починаються з маленької літери.
Поясню принцип роботи цієї команди. У режимі символів узагальнення <обозначает начало слова, что-либо, написанное в квадратных скобках - это выражение на выбор. В данном случае на выбор предлагается интервал букв от маленькой а по маленькую я - всевозможные маленькие буквы. Символ звездочки обозначает сколько угодно каких угодно символов, с правая угловая скобка - конец слова. Тем самым, в поиске мы ищем, чтобы в начале слова была маленькая буква, потом сколько угодно чего угодно, и так по конец слова. Поскольку Word использует "нежадную" систему поиска, он подберет ближайший конец слова.
Зробити нові рядки після слів, що починаються з великих літер.
Шукати слова з великих літер ми вже вміємо, залишилося розібратися з заміною. Нам тут знадобиться можливість замінювати початковий текст на будь-яким чином змінений. Отже, замінюємо <[А-Я]*> (Тут ми шукаємо слова, що починаються з великих літер) на # 92; ^ 13.
В даному випадку вираз # 92; означає "шуканий текст" - то вираз, яке ви знайшли. А ^ 13 - це просто знак нового рядка.
Але є ще один спосіб зробити цю заміну, опишемо його зараз, оскільки більш складні варіанти цього методу нам будуть потрібні нижче. замініть (<[А-Я]*>) на # 92; 1 ^ 13. Результат буде той же самий.
Поясню, як це працює. Вираз в пошуку може містити кілька наборів круглих дужок, в даному випадку один. Самі круглі дужки ніяк не впливають на пошук, шукає Word той же вираз, як якщо б цих дужок не було. А ось все, що знаходиться в дужках, нумерується. В даному випадку у нас є тільки один вислів в дужках, і воно збігається з шуканим текстом. Тому воно нумерується за допомогою послідовності # 92; 1.
Замінити точку на кому в десяткових дробах
У тексті багато дробів, в частині з них зустрічаються точки, з частини - коми. Потрібно навести однаковість, але просто так заміну точки на кому робити не можна, оскільки зустрічаються вони ще багато де в тексті документа. Робимо заміну послідовності (<[0-9]@).([0-9]@>) на # 92; 1, # 92; 2.
Знову-таки, поясню, як це працює. Якщо опустити круглі дужки, то ми отримаємо знайоме нам початок слова, цифру. Далі йде символ @. позначає, що попередній символ може бути повторений ще скільки завгодно разів. Потім йде кома і те ж саме по кінець слова. Так ми знаходимо дробу, написані через кому. Тепер звернемо увагу на дужки. Перша пара дужок оточує частину виразу до коми, друга - все після коми. Тим самим, # 92; 1 в заміні буде позначати все до коми, а # 92; 2 - після. Ось з цих двох виразів і точки між ними ми і конструюємо вираз для заміни.
Прибрати повторювані один за одним рядка
При складанні покажчика можлива ситуація, коли ви визначаєте, які терміни зустрічаються на сторінці, виписуючи їх в окремий файл або навіть скориставшись описаними вище вилученнями слів з маленької літери. Отже, припустимо у вас є список термінів, які зустрілися на даній сторінці, серед нього зустрічаються дублікати. Ви можете впорядкувати його алфавітно, і дублікати будуть йти один за одним. Як швидко позбутися від повторень? Дуже просто! Робимо заміну комбінації ^ 13 (*) ^ 13 # 92; 1 ^ 13 на ^ 13 # 92; 1 ^ 13.
Тут є, що пояснити. Ми використовували вже знайому нам комбінацію # 92; 1. але не в заміні, а в пошуку. Але чи означає вона те ж саме. Отже, ми шукаємо послідовність, в якій йде символ нового рядка, хоч греблю гати символів, знову новий рядок, ті ж символи, що були до цього, і ще один новий рядок. Це і є те, що нам потрібно, два рядки з однаковим вмістом, що йдуть послідовно один за одним. А замінюємо ми цей вислів на одну таку рядок.
Подібну заміну зазвичай коштує прогнати кілька разів для надійності. Як це може допомогти при складанні покажчика? А так, що після того, як визначені всі терміни на сторінці, ми можемо в кінці цих рядків приписати номер цієї сторінки (зробивши, наприклад, заміну ^ 13 на 57 ^ 13. Якщо ви зараз перебуваєте на 57 сторінці).
У підсумку ви отримаєте багато рядків типу Комп'ютер 57 і Інтернет 60. Як же їх тепер об'єднати?
Складне об'єднання рядків
Після алфавітного сортування ви отримаєте ситуацію, коли рядки з одним терміном йдуть послідовно. Наприклад, рядок Комп'ютер 57 відразу йде за рядком Комп'ютер 51. Як же їх автоматично замінити на рядок виду Комп'ютер 51, 57. Необхідно зробити заміну виразу ^ 13 (*) ([0-9] *) ^ 13 # 92; 1 (* ) ^ 13 на ^ 13 # 92; 1 # 92; 2, # 92; 3 ^ 13.
Що за конструкція у нас вийшла? Ми шукаємо новий рядок, будь-яку кількість символів (вони нумеруються через 1 і мають на увазі під собою ключове слово), пробіл, після якого йде цифра і ще раз будь-яку кількість символів (все, що починається з цифри, нумерується через 2). Далі йде переклад рядка, а за ним повинна повторюватися перша послідовність. Залишок нумерується через 3 і закінчується новим перекладом рядка. Замінюємо ми це все на ключове слово, за яким йдуть два залишку через кому. Подібну заміну потрібно проводити кілька разів для досягнення мети.
Я постарався пояснити, як працюють заміни з використанням символів узагальнення в Microsoft Word. Повний список можливих знаків я наводити не буду - ви їх легко знайдете в довідці Word або в інтернеті. Адже головне було пояснити ідею, хіба не так? А якщо що - питайте!