Добавил:
Yanus
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Lecture_3
.txt Метасимволы
в шаблоне (образцах) pattern
цифры \d [0-9]
символ
слова \w [a-zA-z0-9]
пробельный
символ \s [ \t\n\r..]
не цифра \D [^0-9]
не
символ
слова \W [^a-zA-z0-9]
не
пробельный
символ \S
повторение {n,m}
PERL:
if(/\w+ \s+ \d \s+ \W/)
Указатели повторений(перечислители):
символ+ - повторение от 1 и более - {1,}
xy{1,3} - вначале x, затем повторение символа y от 1 до 3, затем c
символ* - {0,}
символ?
либо есть
либо нет - {0,1}
не более m повторений {,m}
[abc]+ - a, ab, bcc (любое количество входящих символов)
ЗАДАНИЕ ПОИСКА ВНАЧАЛЕ "А" ЗАТЕМ "ЧТО-ТО" ПОТОМ СИМВОЛ С
шаблон:
жадный
a.*с
. - что-то
дано: a xxxx c yyyy c ddd
ответ: a xxxx c yyyy c
поиск по шаблону м.б. "ленивым" или "жадным"
ленивый поиск
a.*?c
дано: a xxxx c yyyy c ddd
ответ: a xxxx c
шаблон:
a.*b.*c
дано: a xxx b zzz c yyy b ppp c
ответ жадный: a (xxx b zzz c yyy )b (ppp) c
( .* ) ( .*)
при нескольких повторениях - более левый более жадный
для ленивого поиска: a.+?с
любой повторять от 3 до 8
a.{3,8} - жадный
a.{3,8}? - ленивый
ПРИВЯЗКА К МЕСТУ В СТРОКЕ
исх. текста
начинается ли строка с текста
обозначение: ^ - начало строки
шаблон пример: ^cat (\A)
строка завершается на
пример шаблона: <...> dom$ (\Z)
ПРИВЯЗКА К ГРАНИЦАМ СЛОВ
\b - граница слова
переход от сиврорв не слов к символам слов
\w\W или \W\w
smole
mole
mol - начало слова начинается на mol
для перла:
\bmol
Pattern.compile("\\bmol")
C и производные языки
экранирование: "C:\\Users\\americanmacgee\\Desktop\\Флоренсов лекции" экранирование второй косой чертой, чтобы не было совпадения со специальными символами
в c#
@"\bmol"
@ - спец знак для того чтобы не экранировать от совпадений
\bслово\b
ОБЩИЙ ПОДХОД ПОСТРОЕНИЯ ПАТТЕРНА JAVA
Pattern regexp = Pattern.compile("cat");
Match mat = regexp.matcher(исходный_текст);
mat.replaceFirst("dog"); - только первое
mat.replaceAll("dog"); - все заменяет
строчные прописные буквы - игнорирование регистра
JAVA
Pattern.compile("cat", PatternOption.CASE_INSENSITIVE)
Использование групп символов
Какой-то текст затем нект образом потом тот же текст
(какой-то текст)
tomaHousetoma
temHousetot
"(t.*)House\1 - в скобках запоминается
подстрока найденная в конктретной группе k, далее (вне RegEx) обозначается $номер
далее заменить найденное house
s/
(t.*)House\1/BuildingHouseBuilding/
в начале текста найти слово затем другое слово и их переставить
s/^(\w+)(\W+)(\w+)/$3$2$1
^ - начало
(\w+) слово $1
(\W+) не символы слова $2
(\w+) слово $3
$3$2$1 - перестановка 1ого слова и 3его слова
ВНИМАНИЕ ДЛЯ КУРСАЧА
домом
дома
дому
шаблон: дом(а|у|ом)
(? ) - чтобы не запоминать группу
шаблон: ((\w+)(\s+)(\w+))abc
Presentation Manager abc
$2 - Presentation
$3 - Manager
$1 - Presentation Manager
import java.utils.*;
JAVA
в объектах Matcher есть метод .group(номер_группы) -- $k
-соотнесение текста и шаблона (соответствует или нет)
-замена
-использование в разбиении текста (split)
split("reg.exp", "или текст или ничего");
Matcher.split(" <текст шаблона>");
возвращает массив строк String[]
обработка русских символов
для использования от независимости от Кк (большие и маленькие)
.compile("текст",Pattern.CASE_INTENSITIVE|UNICODE_CASE)
в шаблоне (образцах) pattern
цифры \d [0-9]
символ
слова \w [a-zA-z0-9]
пробельный
символ \s [ \t\n\r..]
не цифра \D [^0-9]
не
символ
слова \W [^a-zA-z0-9]
не
пробельный
символ \S
повторение {n,m}
PERL:
if(/\w+ \s+ \d \s+ \W/)
Указатели повторений(перечислители):
символ+ - повторение от 1 и более - {1,}
xy{1,3} - вначале x, затем повторение символа y от 1 до 3, затем c
символ* - {0,}
символ?
либо есть
либо нет - {0,1}
не более m повторений {,m}
[abc]+ - a, ab, bcc (любое количество входящих символов)
ЗАДАНИЕ ПОИСКА ВНАЧАЛЕ "А" ЗАТЕМ "ЧТО-ТО" ПОТОМ СИМВОЛ С
шаблон:
жадный
a.*с
. - что-то
дано: a xxxx c yyyy c ddd
ответ: a xxxx c yyyy c
поиск по шаблону м.б. "ленивым" или "жадным"
ленивый поиск
a.*?c
дано: a xxxx c yyyy c ddd
ответ: a xxxx c
шаблон:
a.*b.*c
дано: a xxx b zzz c yyy b ppp c
ответ жадный: a (xxx b zzz c yyy )b (ppp) c
( .* ) ( .*)
при нескольких повторениях - более левый более жадный
для ленивого поиска: a.+?с
любой повторять от 3 до 8
a.{3,8} - жадный
a.{3,8}? - ленивый
ПРИВЯЗКА К МЕСТУ В СТРОКЕ
исх. текста
начинается ли строка с текста
обозначение: ^ - начало строки
шаблон пример: ^cat (\A)
строка завершается на
пример шаблона: <...> dom$ (\Z)
ПРИВЯЗКА К ГРАНИЦАМ СЛОВ
\b - граница слова
переход от сиврорв не слов к символам слов
\w\W или \W\w
smole
mole
mol - начало слова начинается на mol
для перла:
\bmol
Pattern.compile("\\bmol")
C и производные языки
экранирование: "C:\\Users\\americanmacgee\\Desktop\\Флоренсов лекции" экранирование второй косой чертой, чтобы не было совпадения со специальными символами
в c#
@"\bmol"
@ - спец знак для того чтобы не экранировать от совпадений
\bслово\b
ОБЩИЙ ПОДХОД ПОСТРОЕНИЯ ПАТТЕРНА JAVA
Pattern regexp = Pattern.compile("cat");
Match mat = regexp.matcher(исходный_текст);
mat.replaceFirst("dog"); - только первое
mat.replaceAll("dog"); - все заменяет
строчные прописные буквы - игнорирование регистра
JAVA
Pattern.compile("cat", PatternOption.CASE_INSENSITIVE)
Использование групп символов
Какой-то текст затем нект образом потом тот же текст
(какой-то текст)
tomaHousetoma
temHousetot
"(t.*)House\1 - в скобках запоминается
подстрока найденная в конктретной группе k, далее (вне RegEx) обозначается $номер
далее заменить найденное house
s/
(t.*)House\1/BuildingHouseBuilding/
в начале текста найти слово затем другое слово и их переставить
s/^(\w+)(\W+)(\w+)/$3$2$1
^ - начало
(\w+) слово $1
(\W+) не символы слова $2
(\w+) слово $3
$3$2$1 - перестановка 1ого слова и 3его слова
ВНИМАНИЕ ДЛЯ КУРСАЧА
домом
дома
дому
шаблон: дом(а|у|ом)
(? ) - чтобы не запоминать группу
шаблон: ((\w+)(\s+)(\w+))abc
Presentation Manager abc
$2 - Presentation
$3 - Manager
$1 - Presentation Manager
import java.utils.*;
JAVA
в объектах Matcher есть метод .group(номер_группы) -- $k
-соотнесение текста и шаблона (соответствует или нет)
-замена
-использование в разбиении текста (split)
split("reg.exp", "или текст или ничего");
Matcher.split(" <текст шаблона>");
возвращает массив строк String[]
обработка русских символов
для использования от независимости от Кк (большие и маленькие)
.compile("текст",Pattern.CASE_INTENSITIVE|UNICODE_CASE)
Соседние файлы в предмете Технологии Разработки Программного Обеспечения