Назначение регулярных выражений
val splitExample = "Пример первый. " +
"Разделяем на слова, учитываем знаки препинания."
val regexp = Regex(" ")
val result = splitExample.split(regex)
val match = regex.findAll(splitExample).toList()
https://regex101.com/
Результат поиска по регулярному выражению
result.zip(match).forEach {
print("${it.first}\n\t\t")
it.second.groups.forEach { matchGroup ->
print("range - ${matchGroup?.range}; ")
println("value - |${matchGroup?.value}|")
}
}
println(result.last())
Простейшее регулярное выражение
Regex(" ")
Пример range - 6..6; value - | |
первый. range - 14..14; value - | |
Разделяем range - 24..24; value - | |
на range - 27..27; value - | |
слова, range - 34..34; value - | |
учитываем range - 44..44; value - | |
знаки range - 50..50; value - | |
препинания.
Наборы символов
Regex("[,. ]")
Пример range - 6..6; value - | |
первый range - 13..13; value - |.|
range - 14..14; value - | |
Разделяем range - 24..24; value - | |
на range - 27..27; value - | |
слова range - 33..33; value - |,|
range - 34..34; value - | |
учитываем range - 44..44; value - | |
знаки range - 50..50; value - | |
препинания range - 61..61; value - |.|
Квантификатор ?
Regex("[,.]? ")
Пример range - 6..6; value - | |
первый range - 13..14; value - |. |
Разделяем range - 24..24; value - | |
на range - 27..27; value - | |
слова range - 33..34; value - |, |
учитываем range - 44..44; value - | |
знаки range - 50..50; value - | |
препинания.
Перечисление
Regex("[[,.]? |.]")
Пример range - 6..6; value - | |
первый range - 13..13; value - |.|
range - 14..14; value - | |
Разделяем range - 24..24; value - | |
на range - 27..27; value - | |
слова range - 33..33; value - |,|
range - 34..34; value - | |
учитываем range - 44..44; value - | |
знаки range - 50..50; value - | |
препинания range - 61..61; value - |.|
Ревнивая квантификация
Regex(" [[,|.]? |.]+")
Пример range - 6..6; value - | |
первый range - 13..14; value - |. |
Разделяем range - 24..24; value - | |
на range - 27..27; value - | |
слова range - 33..34; value - |, |
учитываем range - 44..44; value - | |
знаки range - 50..50; value - | |
препинания range - 61..61; value - |.|
Квантификторы
В общем виде
Представление |
Число повторений |
Пример |
Соответствие |
{n} |
Ровно n раз |
colou{3}r |
colouuur |
{m,n} |
От m до n включительно |
colou{2,4}r |
colouur, colouuur, colouuuur |
{m,} |
Не менее m |
colou{2,}r |
colouur, colouuur, colouuuur и т. д. |
{,n} |
Не более n |
colou{,3}r |
color, colour, colouur, colouuur |
Сокращения
Представление |
Число повторений |
Эквивалент |
Пример |
Соответствие |
? |
Ноль или одно |
{0,1} |
colou?r |
color, colour |
* |
Ноль или более |
{0,} |
colou*r |
color, colour, colouur и т. д. |
+ |
Одно или более |
{1,} |
colou+r |
colour, colouur и т. д. (но не color) |