Каков формат метода .matches () для Scala строк? - PullRequest
0 голосов
/ 21 июня 2020

Мне хорошо известно, что в Scala есть очень хорошо документированный API регулярных выражений, который я должен использовать для любого реального приложения. Однако меня по-прежнему интересует метод .matches(), который существует для String объектов. Используя API регулярных выражений, этот тривиальный пример отлично работает:

".".r.findFirstIn("abc")

Я получаю следующий результат в amm:

Option[String] = Some("a")

Однако это не работает; он оценивается как false:

"abc".matches(".")

Это оценивается как true:

"abc".matches(".+")

Я копал и копал, и я не могу найти точную спецификацию этого нестандартного формата регулярного выражения. Есть ли он, и если да, то где?

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

matches выполняет «полное соответствие», поэтому вся предоставленная строка должна соответствовать регулярному выражению. В случае одной строки соответствующая findFirstIn будет выглядеть примерно так:

"^.$".r.findFirstIn("abc") // results in None

А для "." совпадением будет любая строка с одним символом:

"a".matches(".") // true
1 голос
/ 21 июня 2020

Что вы имеете в виду под "нестандартным" форматом регулярного выражения?

Проверка Javado c он говорит:

Вызов этого метода формы str.matches (regex) дает точно такой же результат, что и выражение

Pattern.matches(regex, str)

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

Кроме того, регулярное выражение . не соответствует строке abc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...