Scala регулярное выражение для хэштегов - PullRequest
1 голос
/ 31 января 2020

Я новичок в ИТ, и большинство вещей, которые мне удается решить с помощью поиска Google, но я не смог сделать это успешно на этот раз, поэтому я решил обратиться за помощью, хе-хе.

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

val tweetwords = statuses.flatMap(tweetText => tweetText.split(" "))

val hashtags = tweetwords.filter(word => word.startsWith("#"))

Поскольку в твиттере много хэштегов, использующих азиатские буквы, и я хотел выбрать только те, которые используют как английский sh алфавит и цифры. Я попытался добавить некоторые варианты выражений, такие как:

val hashtags = tweetwords.filter(word => word.startsWith("#[^A-Za-z0-9]+"))

Но когда я пытаюсь распечатать их после, они не отображаются. То же выражение на сайтах тестирования регулярных выражений работает отлично.

Что я делаю не так? Спасибо за совет!

1 Ответ

1 голос
/ 31 января 2020

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

val hashtagFilter = "^#[A-Za-z0-9]+$".r

. Затем вы можете использовать его для фильтрации слов в твиттере:

val hashtags = tweetwords.filter(word => hashtagFilter.findFirstIn(word).isDefined)
...