Regex для данных Твиттера для улья - PullRequest
1 голос
/ 25 октября 2019

У меня есть следующие данные Twitter.

Данные делятся на две части:

@Username 

И твит или текст:

RT @username: Stay behind, or take the jump (anything in text or tags and emoji)

RT @username: thehdydvekdgeke

Hshedhdkdjfnfjfkfmfmhdkalshsh + £) # & # (# (£ 63 + kdjdj?100

Это данные, которые я хочу разделить на две части. Первая - это имя пользователя, а вторая - твит.

Регулярное выражение, которое я задаю:

^(RT\s[^ ]*)\s([\S\s]*)$

Первая часть работает, а вторая - нет.

Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 25 октября 2019
with your_data as (
 select 'RT @username: Stay behind, or take the jump (anything in text or tags and emoji)' as str
 )

 select regexp_extract(str,'^RT\\s(\\S*)\\s(.*)$',1) as username, 
        regexp_extract(str,'^RT\\s(\\S*)\\s(.*)$',2) as tweet
    from your_data; 

Результат:

OK
username        tweet
@username:      Stay behind, or take the jump (anything in text or tags and emoji)
Time taken: 1.092 seconds, Fetched: 1 row(s)

Используйте '^RT\\s(\\S*):\\s(.*)$', если вы не хотите использовать «:» в имени пользователя.

Или '^RT\\s(\\S*):?\\s(.*)$', если : необязательно:

with your_data as (
 select 'RT @username Stay behind, or take the jump (anything in text or tags and emoji)' as str
 )

 select regexp_extract(str,'^RT\\s(\\S*):?\\s(.*)$',1) as username, 
        regexp_extract(str,'^RT\\s(\\S*):?\\s(.*)$',2) as tweet
    from your_data;

Результат:

OK
username        tweet
@username       Stay behind, or take the jump (anything in text or tags and emoji)
Time taken: 28.587 seconds, Fetched: 1 row(s)
...