Chapter 17. Рэгулярныя выразы
Prev |  | Next

# Chapter 17. Рэгулярныя выразы

Рэгулярныя выразы (або, часам, рэгвыры), якія ўжываюцца ў пошуках і правілах сэгмэнтаваньня, гэта выразы, якія падтрымліваюцца Java. Калі патрабуюцца больш спэцыфічныя зьвесткі, зьвяртайцеся да “Java Regex documentation”. Дадатковыя спасылкі і прыклады гл. ніжэй.

### Note

Гэты разьдзел — для дасьведчаных карыстальнікаў, якім патрабуецца вызначаць уласныя варыянты правілаў сэгмэнтаваньня або ўжываць у пошуках складаныя выразы.

Table 17.1. Рэгулярны выраз — сьцягі.

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
(?i) | Ня ўлічваць рэгістар пры падборы адпаведнікаў (па змаўчаньні шаблён улічвае рэгістар).

Table 17.2. Рэгулярны выраз — сымбаль

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
x | Сымбаль x, за выключэньнем наступнага…
\uhhhh | Сымбаль з шаснаццатковым значэньнем 0xhhhh
\t | Сымбаль табуляцыі ('\u0009')
\n | Сымбаль новага радка ('\u000A')
\r | Сымбаль вяртаньня карэткі ('\u000D')
\f | Сымбаль падачы блянка ('\u000C')
\a | Сымбаль “званок” ('\u0007')
\e | Сымбаль кіроўнай пасьлядоўнасьці ('\u001B')
\cx | Кіроўны сымбаль, адпаведны x
\0n | Сымбаль з васьмічным значэньнем 0n (0 <= n <= 7)
\0nn | Сымбаль з васьмічным значэньнем 0nn (0 <= n <= 7)
\0mnn | Сымбаль з васьмічным значэньнем 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh | Сымбаль з шаснаццатковым значэньнем 0xhh

Table 17.3. Рэгулярны выраз — цытаваньне

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
\ | Нічога, проста азначае наступны сымбаль. Гэта патрабуецца, каб увесьці літаральна адзін з мэта-сымбаляў !$()*+.<>?[\]^{|}.
\\ | Напрыклад, гэта — сымбаль зваротнай косай рысы.
\Q | Нічога, проста азначае ўсе сымбалі да \E.
\E | Нічога, проста азначае канец цытаваньня, пачатага з \Q.

Table 17.4. Рэгулярны выраз — Клясы для блёкаў і катэгорыя Unicode

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
\p{InGreek} | Сымбаль з грэцкага блёку (просты блёк)
\p{Lu} | Сымбаль у верхнім рэгістры (простая катэгорыя)
\p{Sc} | Сымбаль валюты
\P{InGreek} | Які заўгодна сымбаль ня з грэцкага блёку (адмаўленьне)
[\p{L}&&[^\p{Lu}]] | Якая заўгодна літара ня ў верхнім рэгістры (адыманьне)

Table 17.5. Рэгулярны выраз — Клясы сымбаляў

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
[abc] | a, b або c (просты кляс)
[^abc] | Які заўгодна сымбаль апроч a, b або c (адмаўленьне)
[a-zA-Z] | Ад a да z або ад A да Z уключна (дыяпазон)

Table 17.6. Рэгулярны выраз — Вызначаныя клясы сымбаляў

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
. | Які заўгодна сымбаль (апроч канцоў радкоў)
\d | Лічба: [0-9]
\D | Ня лічба: [^0-9]
\s | Прабельны сымбаль: [ \t\n\x0B\f\r]
\S | Непрабельны сымбаль: [^\s]
\w | Сымбаль у слове: [a-zA-Z_0-9]
\W | Сымбаль ня ў слове: [^\w]

Table 17.7. Рэгулярны выраз — Вызначальнікі межаў

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
^ | Пачатак радка
$ | Канец радка
\b | Мяжа слова
\B | Мяжа няслова

Table 17.8. Рэгулярны выраз — Прагныя квантары

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
X? | X, адзін раз або ніколі
X* | X, нуль або некалькі разоў
X+ | X, адзін або некалькі разоў

### Note

прагныя квантары адпавядаюць як мага большай пасьлядоўнасьці. Напрыклад, для a+ будзе адпаведнікам aaa у aaabbb

Table 17.9. Рэгулярны выраз — Няпрагныя квантары

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
X?? | X, адзін раз або ніколі
X*? | X, нуль або некалькі разоў
X+? | X, адзін або некалькі разоў

### Note

няпрагныя квантары адпавядаюць як мага меншай пасьлядоўнасьці. Напрыклад, для a+? будзе адпаведнікам першае a у пасьлядоўнасьці aaabbb

Table 17.10. Рэгулярны выраз — Лягічныя апэратары

Канструктыўны элемэнт | … адпавядае наступнаму
--- | ---
XY | X з Y за ім
X|Y | Або X, або Y
(XY) | XY як адзіная група

## 1. Рэгулярныя выразы і прыклады ўжываньня

Для тэставаньня рэгулярных выразаў можна скарыстацца з шэрагу інтэрактыўных інструмэнтаў. Яны звычайна працуюць аднолькавым чынам (для прыкладу ўзяты Regular Expression Tester, гл. ніжэй): з рэгулярным выразам (верхні элемэнт) аналізуецца шуканы тэкст (тэкставае поле ў сярэдзіне), знаходзяцца нейкія адпаведнікі, вынікі паказваюцца ў полі выніковага тэксту.

Figure 17.1. Regex Tester

Вэрсіі аўтаномнага інструмэнта для Windows, Linux, FreeBSD: гл. The Regex Coach. Гэта амаль тое самае, што і ў прыкладзе вышэй.

Добры збор карысных прыкладаў рэгулярных выразаў можна ўзяць з самой OmegaT (гл. Налады → Сэгмэнтаваньне). Наступны сьпіс уключае выразы, карысныя для пошукаў у памяці перакладаў:

Table 17.11. Regex — Прыклады рэгулярных выразаў у перакладах

Рэгулярны выраз | Знойдзецца наступнае:
--- | ---
(\b\w+\b)\s\1\b | паўтор словаў
[\.,]\s*[\.,]+ | коска або кропка, затым прабелы і яшчэ адна коска або кропка
\. \s+$ | лішнія прабелы пасьля кропкі ў канцы радка
\s+a\s+[aeiou] | Для ангельскай мовы: перад словамі, якія пачынаюцца з галосных, звычайна павінна стаяць “an”, а ня “a”
\s+an\s+[^aeiou] | Для ангельскай мовы: праверка, падобная на апісаную вышэй, але для зычных (“a”, а ня “an”)
\s{2,} | адзін або некалькі прабелаў
\.[A-Z] | Кропка, за ёй літара ў верхнім рэгістры — магчыма, прапушчаны прабел паміж кропкай і пачаткам новага сказу?
\bis\b | пошук “is”, але ня “this” або “isn't” і да г. п.

Prev |  | Next
Chapter 16. Пошук і замена | Home | Chapter 18. Слоўнікі