Удалить твиты регулярных выражений из строки текста

У меня есть лист Excel, заполненный твитами. Есть несколько записей, которые содержат строки типа @blah среди других. Мне нужно сохранить оставшуюся часть текста и удалить часть @blah. Например: "@villos эй чувак" должен быть преобразован в: "эй чувак". Это то, что я сделал до сих пор.

Sub Macro1()
'
' Macro1 Macro
'
Dim counter As Integer
Dim strIN As String
Dim newstring As String

For counter = 1 To 46
    Cells(counter, "E").Select
    ActiveCell.FormulaR1C1 = strIN
    StripChars (strIN)
    newstring = StripChars(strIN)
    ActiveCell.FormulaR1C1 = StripChars(strIN)
Next counter
End Sub

Function StripChars(strIN As String) As String
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
 With objRegex
 .Pattern = "^@?(\w){1,15}$"
.ignorecase = True
StripChars = .Replace(strIN, vbNullString)
End With
End Function

Кроме того, есть также записи, подобные этой: Ÿ³é‡ï¼Ÿã€€ ãˆã‚ã¦çŸ¥ã‚Šã¾ã—ãŸã€‚ shiftã—ãªãŒã‚‰ã‚¨ã‚¯ã‚¹ã

Они тоже мне нужны! Идеи?

1 ответ

Для каждой строки в таблице запустите следующее регулярное выражение: ^(@.+?)\s+?(.*)$

Если строка соответствует регулярному выражению, интересующая вас информация будет находиться во второй группе захвата. (Обычно ноль индексируется, но позиция 0 будет содержать все совпадение). Первая группа захвата будет содержать дескриптор твиттера, если вам это тоже нужно.

Regex демо здесь.

Однако это не будет соответствовать твитам, которые не являются ответами (начиная с @). В этой ситуации единственный способ отличить обычные твиты от ненужных вам нежелательных - ограничить твит буквенно-цифровыми цифрами - но это может означать, что некоторые твиты пропускаются, если они содержат не алфавитно-цифровые символы. Следующее регулярное выражение будет работать, если это не проблема для вас:
^(?:(@.+?)\s+?)?([\w\t ]+)$

Демо 2.

Другие вопросы по тегам