извлечь два хэштега рядом друг с другом в г - PullRequest
3 голосов
/ 03 июля 2019

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

tweet = 'I like #apple #orange'
str_extract_all(tweet,"#\\S+")

Это работает в большинстве ситуаций.Но иногда два хэштега находятся рядом друг с другом.

tweet = 'I like #apple#orange'
str_extract_all(tweet,"#\\S+")

я получил вот что:

[[1]]
[1] "#apple#orange" 

Кто-нибудь знает, как я могу правильно извлечь хэштеги, когда они разделены или рядомдруг другу?

Ответы [ 3 ]

4 голосов
/ 03 июля 2019

Вы превышаете \S, потому что это будет соответствовать непробельному символу и #.

Вы можете использовать класс *1006* с отрицательным символом, чтобы не соответствовать пробелуchar, а не #

#[^#\\s]+

Ваш код может выглядеть следующим образом:

tweet = 'I like #apple#orange'
str_extract_all(tweet,"#[^#\\s]+")

Результат

[[1]]
[1] "#apple"  "#orange

R demo

2 голосов
/ 03 июля 2019

Другая (возможно, менее краткая) base возможность:

gsub("([a-z](?=#))(#\\w)","\\1 \\2",
     strsplit(tweet," (?=#+)",perl = TRUE)[[1]][2], perl=TRUE)
[1] "#apple #orange"

Если они вам нужны отдельно:

 strsplit(gsub("([a-z](?=#))(#\\w)","\\1 \\2",
      strsplit(tweet," (?=#+)",perl = TRUE)[[1]][2], perl=TRUE),
      " ")
[[1]]
[1] "#apple"  "#orange"
2 голосов
/ 03 июля 2019

Я предполагаю, что это простое выражение может работать:

#([^#\s]+)

, что исключает пробелы и # с после первого #.

Демо

...