WedX - журнал о программировании и компьютерных науках

Последовательность строк синтаксического анализа Scala

Я хочу разобрать последовательность строк на отдельные токены. Сейчас он анализирует только первое слово.

class SimpleRegexParser extends RegexParsers{

 def word: Parser[String]    = """[a-z]+""".r ^^ { _.toString }

}

object SimpleRegexParserMain extends SimpleRegexParser{
 def main(args: Array[String]) = {
println(parse(word, "johnny has a little lamb"))

 }
}

Прямо сейчас я получаю: [1.7] parsed: johnny

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

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

03.01.2017

  • Как я могу отфильтровать наши слова в верхнем регистре? Попытался изменить определение на [A-Z]+.r, но оно соответствует только первому слову для текста строки LABEL, который будет напечатан, И будет использоваться для && 03.01.2017
  • В Java этот код работает: 'public class RegexExample { public static void main(String[] args) { String s = текст LABEL для печати И будет использоваться для &&; Шаблон p = Pattern.compile([A-Z]+); Matcher m = p.matcher(s); в то время как (m.find()) { System.out.println(m.group()); } } }' как я могу получить тот же результат в scala? 03.01.2017

Ответы:


1

Хорошо. Я нашел ответ на это.

Пришлось изменить определение слова.

Вот обновленное определение:

class SimpleRegexParser extends RegexParsers{

def word: Parser[String]    = rep("""[a-z]+""".r) ^^ { _.toString }

}

Предыдущее выражение работало для одного слова, теперь у меня есть повторение слова rep().

Вот результат:

[1.25] parsed: List(johnny, has, a, little, lamb)
03.01.2017
  • val regexPattern = [a-z]+.r regexPattern.findAllIn(у Джонни есть маленький ягненок).foreach { println } даже это будет работать. 03.01.2017
  • Спасибо за ответ. Если мне нужно фильтровать строки в верхнем регистре, что я должен изменить? 04.01.2017
  • [А-Я]+.р . это регулярное выражение будет фильтровать строки в верхнем регистре. 04.01.2017
  • Спасибо. Попробую и вернусь. 21.01.2017
  • Я обновил свой код до: def word: Parser[String] = rep([A-Z]+.r) ^^ { _.toString }. Моя входная строка: STARTQUOTE у Джонни маленький ягненок ENDQUOTE. Результат, который я получаю: [1.11] проанализировано: Список (STARTQUOTE). Не хватает второго слова в верхнем регистре. 31.01.2017
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]