Приклади регулярних виражень 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Приклади регулярних виражень



the шукаються рядки, що починаються з буквосполучення "the"
be$ шукаються рядки, що закінчуються буквосполученням "be"
[Ss]igna[ll] шукаються рядки, що містять буквосполучення: "signal", "Signal", "signal" або "Signal"
\. шукаються рядки, що містять крапку
...th шукаються рядки, що містять символи "th" в 4-й і 5-й позиціях
.*\{53\}th шукаються рядки, що містять символи "th" в 54-й і 55-й позиціях
.*\{10,30\}th шукаються рядки, що містять символи "th" у будь-яких позиціях між 11-й і 31-й
.....$ шукаються рядки, що полягають із 5 будь-яких символів
t.*e$ шукаються рядки, що починаються з букви "t", що й закінчуються буквою "e"
[0-9][a-z] шукаються рядки, що містять комбінацію: цифра-прописна буква

Приклад виконання лабораторної роботи N3

Завдання 1

У файлі query2 вибрати всі рядки, у яких в адресі є вулиця (" ST. ").

Розв'язок:

  1. Адреса у файлі query2 починається з 31-й позиції (див. структуру файлу). Тому потрібно насамперед пропустити 30 позицій від початку файлу, що можна зробити таким підвиразом: ".\{30\}" - 30 будь-яких символів від початку файлу.
  2. Вулиця позначається в адресі скороченням "ST.", і ця підстрока може стояти в адресі на будь-якому місці, тобто перед нею можуть бути й інші символи. Оскільки загальна довжина адреси - не більш 20 символів, перед підстрокой, яку ми шукаємо, може бути не більш 17 будь-яких символів, що визначається підвиразом: ".*\{0,17\}".
  3. Нарешті, слід указати підстрочкуу, яку ми шукаємо: "ST.". Оскільки в підстроку входить метасимвол "." (крапка), підвираз для пошуку входження буде мати вигляд: "ST\.".
  4. Підсумкове регулярне вираження:
5.     ".\{31\}.*\{0,17\}ST\."
  1. Протокол виконання:
Script started on Thu Sep 5 07:42:02 2002bash2-2.05$ grep ".\{31\}.*\{0,17\}ST\."../metod/query2203:REBOUND SPORTS      :2 E. 14TH ST.  :NEW-YORK :NY:10009:5555989:10000205:POINT GUARD         :20 THURSTON ST.:YONKERS  :NY:10956:5554766:3000211:AT BAT              :234 BEACHEM ST.:BROOKLINE:MA:02146:5557385:8000212:ALL SPORT           :1000 38TH ST.  :BROOKLYN :NY:11210:5551739:6000213:GOOD SPORT          :400 46TH ST.   :SUNNYSIDE:NY:11104:5553771:5000214:AL'S PRO SHOP       :45 SPRUCE ST.  :SPRING   :TX:77388:5555172:8000223:VELO SPORTS         :23 WHITE ST.   :MALDEN   :MA:02148:5554983:5000228:FITNESS FIRST       :5000 85TH ST.  :JACKSON-HEIGHTS:NY:11372:5558710:4000bash2-2.05$ Script done on Thu Sep 5 07:42:18 2002

Завдання 2

У файлі query1 вибрати всі рядки, у яких зарплата становить ціле число тисяч.

Розв'язок 1:

  1.  Згідно зі стуктурою файлу, стовпець зарплати починається з позиції 60, тому - підвираз: ".\{59\}".
  2. Якщо зарплата становить ціле число тисяч, то в ній утримується одна або кілька цифр, за якими іде три нулі - підвираз: "[0-9]\{1,\}000".
  3. Однак можлива (теоретично) зарплата, наприклад "10001", тому варто подбати про те, щоб наступні за трьома нулями символи були відмінні від значущих цифр. Таких символів може бути скільки завгодно, і ця умова можна забезпечити підвиразом: "[0-9]*".
  4. Підсумкове регулярне вираження:
5.     ".\{59\}[0-9]\{1,\}000[0-9]*"
  1. Протокол виконання:
Script started on Thu Sep  5 07:44:14 2002bash2-2.05$ grep ".\{59\}[0-9]\{1,\}000[0-9]*"../metod/query17569 CHRIS L ALBERTS MANAGER RESEARCH NEW-YORK 30007788 DONALD T SCOTT ANALYST RESEARCH DALLAS 30007799 MATTHEW G FISHER ANALYST RESEARCH   NEW-YORK 30007839 FRANCIS A KING PRESIDENT ACCOUNTING NEW-YORK 50007902 JENNIFER D FORD ANALYST RESEARCH DALLAS 3000bash2-2.05$ Script done on Thu Sep 5 07:44:19 2002

Розв'язок 2:

  1. Оскільки зарплата є останнім полем рядка файлу query1, можливо, можна просто зажадати, щоб три нулі були останніми символами рядка й сформулювати регулярне вираження в такий спосіб: "000$". Однак, такий розв'язок може наткнутися на неочевидну перешкоду. Усе залежить від того, якими засобами був підготовлений вихідний файл query1 (особливо, якщо він був перенесений з іншої системи).
    Справа в тому, що різні програми й редактори використовують різні способи перекладу рядка, і наприкінці рядка можуть виявитися деякі додаткові (невидимі "неозброєним оком" символи. Таким чином, останній 0 у зарплаті може ще не бути останнім символом рядка. Як правило, побачити ці додаткові символи можна, виконавши команду cat з опцією -v. У цьому випадку на видачі команди cat можна побачити недрукований символ, показуваний, наприклад, як: "M".
  2. Наступні протокол ілюструє цей випадок:
Script started on Thu Sep 5 07:45:53 2002bash2-2.05$ grep "000$"../metod/query1bash2-2.05$ cat -v../metod/query17369 JOHN Q SMITH CLERK  RESEARCH DALLAS 800M7499 KEVIN J ALLEN SALESPERSON SALES CHICAGO 1600M7505 JEAN K DOYLE MANAGER SALES NEW-YORK 2850M7506 LYNN S DENNIS MANAGER SALES DALLAS 2750M7507 LESLIE D BAKER MANAGER OPERATIONS NEW-YORK 2200M7521 CYNTHIA D WARD SALESPERSON SALES CHICAGO 1250M7555 DANIEL T PETERS SALESPERSON SALES NEW-YORK 1250M7557 KAREN P SHAW SALESPERSON SALES NEW-YORK 1250M7560 SARAH S DUNCAN SALESPERSON SALES DALLAS 1250M7564 GREGORY J LANGE SALESPERSON SALES DALLAS 1250M7566 TERRY M JONES MANAGER RESEARCH DALLAS 2975M7569 CHRIS L ALBERTS MANAGER RESEARCH NEW-YORK 3000M7600 RAYMOND Y PORTER SALESPERSON SALES NEW-YORK 1250M7609 RICHARD M LEWIS STAFF  OPERATIONS DALLAS 1800M7654 KENNETH J MARTIN SALESPERSON SALES CHICAGO 1250M7676 DENISE D SOMMERS STAFF  OPERATIONS CHICAGO 1850M7698 MARION S BLAKE MANAGER SALES CHICAGO 2850M7782 CAROL F CLARK MANAGER ACCOUNTING NEW-YORK 2450M7788 DONALD T SCOTT ANALYST RESEARCH DALLAS 3000M7789 LIVIA N WEST SALESPERSON SALES DALLAS 1500M7799 MATTHEW G FISHER ANALYST RESEARCH NEW-YORK 3000M7820 PAUL S ROSS SALESPERSON SALES BOSTON 1300M7839 FRANCIS A KING PRESIDENT ACCOUNTING NEW-YORK 5000M7876 DIANE G ADAMS CLERK  RESEARCH DALLAS 1100M7900 FRED S JAMES CLERK  SALES     CHICAGO 950M7902 JENNIFER D FORD ANALYST RESEARCH DALLAS 3000M7916 GRACE M ROBERTS ANALYST RESEARCH NEW-YORK 2875M7919 MICHAEL A DOUGLAS CLERK  RESEARCH NEW-YORK 800M7934 BARBARA M MILLER CLERK  ACCOUNTING NEW-YORK 1300M7950 ALICE B JENSEN CLERK  SALES NEW-YORK 750M7954 JAMES T MURRAY CLERK  SALES DALLAS 750Mbash2-2.05$ Script done on Thu Sep 5 07:46:12 2002

Розв'язок 3:

  1. Уточнимо логікові попереднього розв'язку, оказавшегося неправильним. За трьома нулями перед кінцем рядка може випливати (а може й не випливати) ще один символ, відмінний від значущої цифри:
2.     "000[0-9]\{0,1\}"
  1. Протокол виконання:
Script started on Thu Sep 5 07:48:12 2002bash2-2.05$ grep "000[0-9]\{0,1\}"../metod/query17569 CHRIS L ALBERTS MANAGER RESEARCH NEW-YORK 30007788 DONALD T SCOTT ANALYST RESEARCH DALLAS 30007799 MATTHEW G FISHER ANALYST RESEARCH NEW-YORK 30007839 FRANCIS   A KING PRESIDENT ACCOUNTING NEW-YORK 50007902 JENNIFER D FORD ANALYST RESEARCH DALLAS 3000bash2-2.05$ Script done on Thu Sep 5 07:48:15 2002

Завдання 3

У файлі query4 вибрати всі рядки, у яких дата продажу - весна 1990 р.

Розв'язок:



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 51; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.126.5 (0.006 с.)