val AlphabetPattern = "^([a-z]+)".r
def stringMatch(s: String) = s match {
case AlphabetPattern() => println("found")
case _ => println("not found")
}
Если я стараюсь,Scala регулярного выражения «начинается с строчными» не работает
stringMatch("hello")
я получаю «не найден», но я ожидал, чтобы получить «нашел».
Мое понимание регулярных выражений,
[аз] = в диапазоне от 'A' до 'Z'
+ = больше предыдущего рисунка одного
^ = начинается с
So regex AlphabetPattern - это «все строки, начинающиеся с одного или нескольких алфавитов в диапазоне az»
Конечно, я что-то упускаю, хочу знать что.
Имейте в виду, что вам не нужен '^' (и вам не понадобится '$'). Соответствие Regex, используемое в 'match', является совпадением .... Не найти/найти. I.e., он неотъемлемо закреплен на обоих концах. Чтобы получить поведение, похожее на поиск, вам нужно поставить '. *' На одном или обоих концах. –
Это обман http://stackoverflow.com/q/17572225/1296806, на котором также был дан неверный ответ. @RandallSchulz см. Ответ. –
Извините @ RandallSchulz (нехватка сна), я имел в виду, что мнемоника для «матча» пропускает неизбранное поведение, что является простым вариантом для API, который нуждается в рекламе. –