1.4 Рішення з математичного забезпечення

 

1.4.1 Пошук у тексті

У нашому проекті для повноцінного пошуку використовуються засоби текстового пошуку. В даний час такі засоби посилено розвиваються. До складу Microsoft SQL Server 2005 навіть включений новий для СУБД спеціальний компонент Full-text Search (повнотекстовий пошук).

Одним з наймогутніших інструментів пошуку в текстах є регулярні вирази.

Регулярні вирази підтримуються багатьма програмами (редакторами, системними утилітами, ядрами баз даних і так далі), але їх можливості повною мірою виявляються в мовах програмування, зокрема Java, Jscript, Visual Basic, Vbscript, Javascript, C, C++, C#, elisp, Perl, Python, Ruby, PHP, awk і тому подібне Регулярні вирази займають центральне місце в багатьох програмах, написаних на цих мовах.

Підтримка регулярних виразів в таких різнорідних застосуваннях пояснюється тим, що регулярні вирази володіють виключно багатими можливостями. На низькому рівні регулярний вираз описує якийсь фрагмент тексту. Їм можна скористатися для перевірки даних, введених користувачем, або, наприклад, для фільтрації великих об'ємів даних. На більш високому рівні регулярні вирази дозволяють управляти даними.

За допомогою регулярних виразів ви можете проводити пошук, заміну підрядків, використовуючи шаблони. Вони складаються із звичайних символів і так званих метасимволів (metacharacters) - символів, що управляють. Список метасимволів достатньо обширний. Нижче приведені найбільш часто використовувані символи:

­      * - сооветствуєт виразу, що знаходиться до знаку "*", узятому нуль або більше разів. Наприклад, шаблон "[0-9]*" визначає рядок, що містить нуль або більш за цифри;

­      - призначений для визначення символу, що є метасимволом. Наприклад, шаблон "." відповідає будь-якому символу, а шаблон "\." відповідатиме крапці;

­      ^ - визначає початок вхідного рядка;

­      $ - визначає кінець вхідного рядка;

­      + - відповідає виразу, що знаходиться до знаку "+", узятому один або більше разів. Наприклад, шаблон "[0-9]+" визначає рядок, що містить одну або більш за цифри;

­      . - визначає будь-який символ окрім символу перекладу рядка;

­      | - розділяє два вирази. Наприклад, шаблону "a|b" відповідатимуть рядки "a" і "b";

­      [a-z] - визначає діапазон символів. Наприклад, шаблон "[0-9]" визначає цифру;

­      [^.] - визначає будь-який символ, не відповідний заданому набору. Наприклад, шаблон "[^0-9]" визначає будь-який символ, окрім цифри;

­      w - слово. Те ж, що і [a-za-z_0-9];

­      W - все, окрім слів. Те ж, що і [^a-zA-Z_0-9];

­      s - будь-яке порожнє місце. Те ж, що і [ \f\n\r\t\v];

­      |S - будь-яке непорожнє місце. Те ж, що і [^ \f\n\r\t\v];

­      d - десяткова цифра. Те ж, що і [0-9];

­      D - не цифра. Те ж, що і [^0-9].

Ось простий приклад регулярного виразу - шаблон номера телефону.

^(\(\d+\)){0,1}d{3}-\d{2}-\d{2}$

Цей вираз може показатися складним, хоча насправді все досить просто:

­      ^ - цей символ указує, що тут починається шуканий рядок;

­      (- код міста розташовується усередині дужок;

­      ( - відкриваюча дужка;

­      d+ - після дужки повинні розташовуватися код міста - одна або декілька цифр;

­      ) - Закриваюча дужка;

­      ) - Закриваюча дужка - метасимвол, вказуючий, що тут закінчується групований вираз (в даному випадку, код міста);

­      0,1} - Цей метасимвол указує, що вираз в дужках (код міста) може повторюватися від нуля до одного разу, тобто код міста можна не указувати;

­      d{3}-\d{2}-\d{2} - Три групи цифр - одна група по три і дві по дві цифри. Цифри розділені дефісами;

­      $ - Цей знак показує, що тут закінчується підрядок.

Найчастіше регулярні вирази використовуються для пошуку і порівняння рядків. Оскільки таке завдання при обробці даних зустрічається дуже часто, бажано, щоб пошук рядків виконувався швидко.

Розглянемо деякі алгоритми пошуку заданого слова (підрядки) в рядку.

Відмітимо, що дане завдання не зводиться тільки до обробки текстів. Це, наприклад, і пошук даного ланцюжка нуклеотідов в молекулі ДНК, і пошук заданої послідовності дій в реалізації алгоритму. У загальному випадку, кажучи формально, завдання пошуку підрядків (string-matching problem) полягає в наступному [12].

Хай дані «текст» - масив T[1..n] довжини n і «зразок» - масив P[1..m] довжини m. Ми вважаємо, що елементи масивів P і T - символи деякого кінцевого алфавіту Ќ (наприклад Ќ = {0,1} або Ќ = {а, b ., z}). Масиви, що складаються з символів алфавіту Ќ, часто називають рядками символів, або словами в цьому алфавіті.

Говоритимемо, що зразок P входить із зрушенням s, або, еквівалентно, входить з позиції s + 1 в текст T, якщо 0 <= s <= n - m і T[s + 1..s + m]= P[1..m] (іншими словами, якщо T[s + j]= P[j] при 1 <= j <= m). Якщо P входить із зрушенням s в текст T, то говорять, що s - допустиме зрушення, інакше s - неприпустиме зрушення. Завдання пошуку підрядків полягає в знаходженні всіх допустимих зрушень для даних тексту T і зразка P.

 


Информация о работе «Розробка автоматизованого робочого місця науково-технічної бібліотеки університету»
Раздел: Информатика, программирование
Количество знаков с пробелами: 132733
Количество таблиц: 6
Количество изображений: 24

Похожие работы

Скачать
49644
0
0

... іла необхідність зміни ролі бібліотеки, вона повинна перетворитися в центр інформаційного й комунікативного забезпечення людей. Розділ ІІ. Основні шляхи автоматизації шкільних бібліотек району На жаль, впровадження нових інформаційних технологій у шкільні бібліотеки поки досить проблематично. Більшість сільських бібліотек на сьогоднішній день взагалі не мають комп'ютерів. Можна виділити два ...

Скачать
81726
1
0

... розділу можна розподілити за десятьма діленнями, тому виникає велика кількість штучних рішень, відбувається нерівномірність наповнення ділень. У той же час застосування в бібліотечно-бібліографічній класифікації десяткових індексів мало велике значення, і їх стали широко використовувати. Такі індекси дають можливість деталізувати систему як це необхідно, подрібнюючи попередні ділення на десять ...

Скачать
153380
1
0

... втілення вже залежить не тільки від прогресу науково-технічної думки, але й від соціально-економічних і правових умов, в яких вони існують. 2.2 Сучасні парадигми інформатизації суспільства в умовах глобалізації Інформатизація сучасного суспільства побудована на певних законах і постулатах, які надають їм постійного явища. У різних наукових напрямах по-різному трактується сучасне інформаційне ...

Скачать
367716
10
48

... В АБС АКБ «ПРОМІНВЕСТБАНК» ТА ОЦІНКА РІВНЯ ВРАЗЛИВОСТІ БАНКІВСЬКОЇ ІНФОРМАЦІЇ 3.1 Постановка алгоритму задачі формування та опис елементів матриці контролю комплексної системи захисту інформації (КСЗІ) інформаційних об’єктів комерційного банку В дипломному дослідженні матриця контролю стану побудови та експлуатації комплексної системи захисту інформації в комерційному банку представлена у вигляді ...

0 комментариев


Наверх