Трейт UnanchoredRegex.UnanchoredRegex
trait UnanchoredRegex extends Regex
A Regex, который находит первое совпадение при использовании в шаблоне совпадения.
| См. также | |
|---|---|
| Супертипы |
Конкретные методы
Исходный код
| Определения классов | Regex |
|---|
Исходный код
override def unanchored: UnanchoredRegex
Создаёт новый Regex с тем же шаблоном, но без требования, чтобы весь строковый текст соответствовал шаблону в шаблонах извлекателей и Regex#matches.
Обычно соответствие date ведёт себя так, как будто шаблон заключён в якоря, "^pattern$".
Отсутствующий якорь Regex ведет себя так, как если бы эти якоря были удалены.
Обратите внимание, что этот метод на самом деле не удаляет никакие соответствия из шаблона.
Вызов anchored возвращает исходный Regex.
val date = """(\d\d\d\d)-(\d\d)-(\d\d)""".r.unanchored
val date(year, month, day) = "Date 2011-07-15" // OK
val copyright: String = "Date of this document: 2011-07-15" match {
case date(year, month, day) => s"Copyright $year" // OK
case _ => "No copyright"
}
| Возвращает | Новый неявкоренный regex |
|---|---|
| Определения классов | Regex |
Наследованные методы
Исходный код
| Унаследованно от | Regex |
|---|
Исходный код
Возвращает все неперекрывающиеся совпадения этого Regex в заданной последовательности символов в виде scala.util.matching.Regex.MatchIterator, что является специальным scala.collection.Iterator, который возвращает сопоставленные строки, но также может быть запрошен для получения дополнительных данных о последнем совпадении, таких как группы захвата и начальная позиция.
А 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.
| Параметры значения |
|
|---|---|
| Возвращает | scala.util.matching.Regex.MatchIterator совпадающих подстрок. |
| Пример |
for (words <- """\w+""".r findAllIn "A simple example.") yield words |
| Унаследовано от | Regex |
Источник
Возвращает все неперекрывающиеся совпадения этого регулярного выражения в заданной последовательности символов как scala.collection.Iterator объектов scala.util.matching.Regex.Match.
| Параметры значения |
|
|---|---|
| Возвращает | scala.collection.Iterator объектов scala.util.matching.Regex.Match для всех совпадений. |
| Пример |
for (words <- """\w+""".r findAllMatchIn "A simple example.") yield words.start |
| Унаследовано от | Regex |
Источник
Возвращает необязательную первую совпадающую строку этого Regex в заданной последовательности символов или None, если совпадения нет.
| Параметры значения |
|
|---|---|
| Возвращает | scala.Option первой совпадающей строки в тексте. |
| Пример |
"""\w+""".r findFirstIn "A simple example." foreach println // prints "A" |
| Унаследовано от | Regex |
Источник
Возвращает необязательное первое совпадение этого Regex в заданной последовательности символов или None, если оно не существует.
Если совпадение успешно, можно получить дополнительные данные из scala.util.matching.Regex.Match.
| Параметры значения |
|
|---|---|
| Возвращает | 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 |
Источник
Возвращает необязательное совпадение этого Regex в начале заданной последовательности символов или None, если оно не совпадает ни с каким префиксом.
В отличие от findFirstMatchIn, этот метод вернёт совпадение только в начале входных данных.
| Параметры значения |
|
|---|---|
| Возвращает | scala.Option объекта scala.util.matching.Regex.Match совпадающей строки. |
| Пример |
"""\w+""".r findPrefixMatchOf "A simple example." map (_.after) // returns Some(" simple example.")
|
| Унаследовано от | Regex |
Источник
Возвращает необязательное совпадение этого Regex в начале заданной последовательности символов или None, если оно не совпадает ни с каким префиксом.
В отличие от findFirstIn, этот метод вернёт совпадение только в начале входных данных.
| Параметры значения |
|
|---|---|
| Возвращает | scala.Option совпадающего префикса. |
| Пример |
"""\p{Lower}""".r findPrefixOf "A simple example." // returns None, since the text does not begin with a lowercase letter
|
| Унаследовано от | Regex |
Источник
Возвращает, соответствует ли это Regex заданной последовательности символов.
Подобно экстрактору, этот метод учитывает привязку.
| Параметры значения |
|
|---|---|
| Возвращает | true только тогда, когда |
| См. также | |
| Пример |
"""\d+""".r matches "123" // returns true |
| Унаследовано от | Regex |
Источник
| Унаследовано от | Regex |
|---|
Источник
Заменяет все совпадения с использованием функции замены. Функция замены принимает 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 для экранирования этих символов.
| Параметры значения |
|
|---|---|
| Возвращает | Строка target после замен. |
| Унаследовано от | Regex |
Источник
Заменяет все совпадения на строку.
В строке замены знак доллара ($) , за которым следует число, будет интерпретироваться как ссылка на группу в совпавшем шаблоне, при этом числа от 1 до 9 соответствуют первым девяти группам, а 0 — всему совпадению. Любой другой символ является ошибкой. Символ обратной косой черты (\) будет интерпретироваться как символ экранирования и может использоваться для экранирования знака доллара. Используйте Regex.quoteReplacement для экранирования этих символов.
| Параметры значения |
|
|---|---|
| Возвращает | Результирующая строка |
| Пример |
"""\d+""".r replaceAllIn ("July 15", "<NUMBER>") // returns "July <NUMBER>"
|
| Унаследовано от | Regex |
Источник
Заменяет первое совпадение строкой.
В строке замены знак доллара ($) , за которым следует число, будет интерпретироваться как ссылка на группу в совпавшем шаблоне, при этом числа от 1 до 9 соответствуют первым девяти группам, а 0 — всему совпадению. Любой другой символ является ошибкой. Символ обратной косой черты (\) будет интерпретироваться как символ экранирования и может использоваться для экранирования знака доллара. Используйте Regex.quoteReplacement для экранирования этих символов.
| Параметры значения |
|
|---|---|
| Возвращает | Результирующая строка |
| Унаследовано от | Regex |
Источник
Заменяет некоторые совпадения с использованием функции замены, которая возвращает 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 для экранирования этих символов.
| Параметры значения |
|
|---|---|
| Возвращает | Строка target после замен. |
| Унаследовано от | Regex |
Источник
Разделяет предоставленную последовательность символов вокруг совпадений этого регулярного выражения.
| Параметры значения |
|
|---|---|
| Возвращает | Массив строк, вычисленный путем разделения входных данных вокруг совпадений этого регулярного выражения |
| Унаследовано от | Regex |
Источник
Строка, определяющая регулярное выражение
| Классы определений | Regex -> Any |
|---|---|
| Унаследовано от | Regex |
Источник
Попытка сопоставления с scala.util.matching.Regex.Match.
Ранее неудачное сопоставление приводит к None.
Если было выполнено успешное сопоставление с текущим шаблоном, то этот результат используется.
В противном случае это регулярное выражение применяется к ранее сопоставленному входу, и результат этого сопоставления используется.
| Унаследовано от | Regex |
|---|
Источник
Попытка сопоставления с представлением строки 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
| Параметры значения |
|
|---|---|
| Возвращает | Совпадение |
| Унаследовано от | Regex |
Источник
Попытка сопоставить 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 _ => ""
}
| Параметры значения |
|
|---|---|
| Возвращает | Совпадения |
| Унаследовано от | Regex |
Унаследованные поля
Исходный код
| Унаследовано от | Regex |
|---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/util/matching/UnanchoredRegex.html