Spec-Zone.ru › Scala 3.1

Трейт scala.util.matching.UnanchoredRegex

Исходный код

трейт UnanchoredRegex extends Regex

A Regex, который находит первое совпадение при использовании в совпадении с шаблоном.

См. также

Regex#unanchored

Надтипы
класс Regex
трейт Serializable
класс Object
трейт Matchable
класс Any

Конкретные методы

Исходный код
переопределение защищенного метода runMatcher(m: Matcher): Boolean

Классы определений Regex

Исходный код
переопределение метода unanchored: UnanchoredRegex

Классы определений Regex

Унаследованные методы

Исходный код
метод anchored: Regex

Унаследованно от Regex

Исходный код
метод findAllIn(source: CharSequence): MatchIterator

Возвращает все неперекрывающиеся совпадения этого Regex в заданной последовательности символов в виде scala.util.matching.Regex.MatchIterator, который является специальным scala.collection.Iterator, возвращающим совпадающие строки, но также может быть запрошен для получения дополнительных данных о последнем совпадении, таких как группы захвата и начальная позиция.

A MatchIterator также может быть преобразован в итератор, который возвращает объекты типа scala.util.matching.Regex.Match, как это обычно возвращается findAllMatchIn.

В случае потенциального перекрытия совпадений возвращается первое возможное совпадение, за которым следует следующее совпадение, следующее за входом, потребленным первым совпадением:

val hat  = "hat[^a]+".r
val hathaway = "hathatthattthatttt"
val hats = hat.findAllIn(hathaway).toList                     // List(hath, hattth)
val pos  = hat.findAllMatchIn(hathaway).map(_.start).toList   // List(0, 7)

Для возвращения перекрывающихся совпадений можно сформулировать регулярное выражение с предпросмотром (?=) , которое не потребляет перекрывающуюся область.

val madhatter = "(h)(?=(at[^a]+))".r
val madhats   = madhatter.findAllMatchIn(hathaway).map {
  case madhatter(x,y) => s"$x$y"
}.toList                                       // List(hath, hatth, hattth, hatttt)

Попытка получить информацию о совпадении после исчерпания итератора приводит к java.lang.IllegalStateException. См. scala.util.matching.Regex.MatchIterator для получения подробностей.

Параметры значений
source

Текст для сравнения.

Возвращает

A scala.util.matching.Regex.MatchIterator совпадающих подстрок.

Пример
for (words <- """\w+""".r findAllIn "A simple example.") yield words
Унаследованно от Regex

Исходный код
метод findAllMatchIn(source: CharSequence): Iterator[Match]

Возвращает все неперекрывающиеся совпадения этого регулярного выражения в заданной последовательности символов как scala.collection.Iterator объектов scala.util.matching.Regex.Match.

Параметры значения
source

Текст для сравнения.

Возвращает

scala.collection.Iterator объектов scala.util.matching.Regex.Match для всех совпадений.

Пример
for (words <- """\w+""".r findAllMatchIn "A simple example.") yield words.start
Унаследовано от Regex

Исходный код
def findFirstIn(source: CharSequence): Option[String]

Возвращает необязательную первую совпадающую строку этого Regex в заданной последовательности символов или None, если совпадения нет.

Параметры значения
source

Текст для сравнения.

Возвращает

scala.Option первой совпадающей строки в тексте.

Пример
"""\w+""".r findFirstIn "A simple example." foreach println // prints "A"
Унаследовано от Regex

Исходный код
def findFirstMatchIn(source: CharSequence): Option[Match]

Возвращает необязательное первое совпадение этого Regex в заданной последовательности символов или None, если оно не существует.

Если совпадение успешно, объект scala.util.matching.Regex.Match можно использовать для получения дополнительных данных.

Параметры значения
source

Текст для сравнения.

Возвращает

scala.Option объекта scala.util.matching.Regex.Match первой совпадающей строки в тексте.

Пример
("""[a-z]""".r findFirstMatchIn "A simple example.") map (_.start) // returns Some(2), the index of the first match in the text
Унаследовано от Regex

Исходный код
def findPrefixMatchOf(source: CharSequence): Option[Match]

Возвращает необязательное совпадение этого Regex в начале заданной последовательности символов или None, если оно не соответствует никакому префиксу последовательности символов.

В отличие от findFirstMatchIn, этот метод вернёт совпадение только в начале входных данных.

Параметры значения
source

Текст для сравнения.

Возвращает

scala.Option объекта scala.util.matching.Regex.Match совпадающей строки.

Пример
"""\w+""".r findPrefixMatchOf "A simple example." map (_.after) // returns Some(" simple example.")
Унаследовано от Regex

Исходный код
def findPrefixOf(source: CharSequence): Option[String]

Возвращает необязательное совпадение этого Regex в начале заданной последовательности символов или None, если оно не соответствует никакому префиксу последовательности символов.

В отличие от findFirstIn, этот метод вернёт совпадение только в начале входных данных.

Параметры значения
source

Текст для сравнения.

Возвращает

scala.Option совпадающего префикса.

Пример
"""\p{Lower}""".r findPrefixOf "A simple example." // returns None, since the text does not begin with a lowercase letter
Унаследовано от Regex

Исходный код
def matches(source: CharSequence): Boolean

Возвращает, соответствует ли это Regex заданной последовательности символов.

Как и экстракт, этот метод учитывает привязку.

Параметры значения
source

Текст для сравнения

Возвращает

true, если и только если source соответствует этому Regex.

См. также

Regex#unanchored

Пример
"""\d+""".r matches "123" // returns true
Унаследовано от Regex

Исходный код
def regex: String

Унаследованное от Regex

Источник
def replaceAllIn(target: CharSequence, replacer: Match => String): String

Заменяет все совпадения с использованием функции замены. Функция замены принимает scala.util.matching.Regex.Match, чтобы получить дополнительную информацию из совпадения. Например:

import scala.util.matching.Regex
val datePattern = new Regex("""(\d\d\d\d)-(\d\d)-(\d\d)""", "year", "month", "day")
val text = "From 2011-07-15 to 2011-07-17"
val repl = datePattern replaceAllIn (text, m => s"${m group "month"}/${m group "day"}")

В строке замены знак доллара ($) за которым следует число будет интерпретирован как ссылка на группу в совпавшем шаблоне, при этом числа от 1 до 9 соответствуют первым девяти группам, а 0 — всему совпадению. Любой другой символ является ошибкой. Символ обратной косой черты (\) будет интерпретирован как символ экранирования и может использоваться для экранирования знака доллара. Используйте Regex.quoteReplacement для экранирования этих символов.

Параметры значения
replacer

Функция, которая отображает совпадение на другую строку.

target

Строка для поиска совпадений.

Возвращает

Строка назначения после замены.

Унаследованное от Regex

Источник
def replaceAllIn(target: CharSequence, replacement: String): String

Заменяет все совпадения строкой.

В строке замены знак доллара ($) за которым следует число будет интерпретирован как ссылка на группу в совпавшем шаблоне, при этом числа от 1 до 9 соответствуют первым девяти группам, а 0 — всему совпадению. Любой другой символ является ошибкой. Символ обратной косой черты (\) будет интерпретирован как символ экранирования и может использоваться для экранирования знака доллара. Используйте Regex.quoteReplacement для экранирования этих символов.

Параметры значения
replacement

Строка, которая заменит каждое совпадение

target

Строка для поиска совпадений

Возвращает

Результат поиска

Пример
"""\d+""".r replaceAllIn ("July 15", "<NUMBER>") // returns "July <NUMBER>"
Унаследованное от Regex

Источник
def replaceFirstIn(target: CharSequence, replacement: String): String

Заменяет первое совпадение строкой.

В строке замены знак доллара ($) за которым следует число будет интерпретирован как ссылка на группу в совпавшем шаблоне, при этом числа от 1 до 9 соответствуют первым девяти группам, а 0 — всему совпадению. Любой другой символ является ошибкой. Символ обратной косой черты (\) будет интерпретирован как символ экранирования и может использоваться для экранирования знака доллара. Используйте Regex.quoteReplacement для экранирования этих символов.

Параметры значения
replacement

Строка, которая заменит совпадение

target

Строка для поиска совпадений

Возвращает

Результат поиска

Унаследованное от Regex

Источник
def replaceSomeIn(target: CharSequence, replacer: Match => Option[String]): String

Заменяет некоторые совпадения с использованием функции замены, возвращающей scala.Option. Функция замены принимает scala.util.matching.Regex.Match, чтобы получить дополнительную информацию из совпадения. Например:

import scala.util.matching.Regex._

val vars = Map("x" -> "a var", "y" -> """some $ and \ signs""")
val text = "A text with variables %x, %y and %z."
val varPattern = """%(\w+)""".r
val mapper = (m: Match) => vars get (m group 1) map (quoteReplacement(_))
val repl = varPattern replaceSomeIn (text, mapper)

В строке замены знак доллара ($) за которым следует число будет интерпретирован как ссылка на группу в совпавшем шаблоне, при этом числа от 1 до 9 соответствуют первым девяти группам, а 0 — всему совпадению. Любой другой символ является ошибкой. Символ обратной косой черты (\) будет интерпретирован как символ экранирования и может использоваться для экранирования знака доллара. Используйте Regex.quoteReplacement для экранирования этих символов.

Параметры значения
replacer

Функция, которая опционально отображает совпадение на другую строку.

target

Строка для поиска совпадений.

Возвращает

Строка назначения после замены.

Унаследованное от Regex

Источник
def split(toSplit: CharSequence): Array[String]

Разбивает предоставленную последовательность символов вокруг совпадений с этим регулярным выражением.

Параметры значения
toSplit

Последовательность символов для разделения

Возвращает

Массив строк, вычисленный путем разделения входных данных вокруг совпадений с этим регулярным выражением

Унаследованное от Regex

Источник
override def toString: String

Строка, определяющая регулярное выражение

Классы определения Regex -> Any
Унаследованное от Regex

Источник
def unapplySeq(m: Match): Option[List[String]]

Попытка сопоставить с scala.util.matching.Regex.Match.

Предыдущий неудачный поиск приводит к None.

Если успешное совпадение было выполнено для текущего шаблона, то используется этот результат.

В противном случае это регулярное выражение применяется к ранее сопоставленному входу, и результат этого сопоставления используется.

Унаследованное от Regex

Источник
def unapplySeq(c: Char): Option[List[Char]]

Попытка сопоставить строковое представление scala.Char.

Если поиск успешен, результатом является первая совпадающая группа, если группы определены, или пустая последовательность в противном случае.

Например:

val cat = "cat"
// the case must consume the group to match
val r = """(\p{Lower})""".r
cat(0) match { case r(x) => true }
cat(0) match { case r(_) => true }
cat(0) match { case r(_*) => true }
cat(0) match { case r() => true }     // no match

// there is no group to extract
val r = """\p{Lower}""".r
cat(0) match { case r(x) => true }    // no match
cat(0) match { case r(_) => true }    // no match
cat(0) match { case r(_*) => true }   // matches
cat(0) match { case r() => true }     // matches

// even if there are multiple groups, only one is returned
val r = """((.))""".r
cat(0) match { case r(_) => true }    // matches
cat(0) match { case r(_,_) => true }  // no match
Параметры значения
c

Символ для поиска совпадений

Возвращает

Совпадение

Унаследованное от Regex

Источник
def unapplySeq(s: CharSequence): Option[List[String]]

Попытка сопоставить java.lang.CharSequence.

Если поиск успешен, результатом является список совпадающих групп (или элемент null если группа не соответствует никакому вводу). Если шаблон не содержит групп, то результатом будет пустой список при успешном сопоставлении.

Этот метод по умолчанию пытается сопоставить весь входной данные; чтобы найти следующую подпоследовательность совпадений, используйте не закрепленное Regex.

Например:

val p1 = "ab*c".r
val p1Matches = "abbbc" match {
  case p1() => true               // no groups
  case _    => false
}
val p2 = "a(b*)c".r
val p2Matches = "abbbc" match {
  case p2(_*) => true             // any groups
  case _      => false
}
val numberOfB = "abbbc" match {
  case p2(b) => Some(b.length)    // one group
  case _     => None
}
val p3 = "b*".r.unanchored
val p3Matches = "abbbc" match {
  case p3() => true               // find the b's
  case _    => false
}
val p4 = "a(b*)(c+)".r
val p4Matches = "abbbcc" match {
  case p4(_*) => true             // multiple groups
  case _      => false
}
val allGroups = "abbbcc" match {
  case p4(all @ _*) => all mkString "/" // "bbb/cc"
  case _            => ""
}
val cGroup = "abbbcc" match {
  case p4(_, c) => c
  case _        => ""
}
Параметры значения
s

Строка для поиска совпадений

Возвращает

Совпадения

Унаследованное от Regex

Унаследованные поля

Источник
val pattern: Pattern

Унаследованное от Regex

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/util/matching/UnanchoredRegex.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API