从文本字符串中删除推文正则表达式

时间:2015-07-23 20:46:50

标签: regex excel vba tweets

我有一张充满推文的excel表。有几个条目包含@blah类型的字符串。我需要保留文本的其余部分并删除@blah部分。例如:“@villos hey dude”需要转变为:“嘿老兄”。这就是我到目前为止所做的。

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

此外,还有类似这样的条目:Ÿ³é‡‡‡ããããã€ããããããããããããããããããããããããã;ãããããããããã€,ã°,ã°ã°,ã°,ã°,ã°,ã°,ã°

我也需要它们!想法?

1 个答案:

答案 0 :(得分:0)

对于电子表格中的每一行,运行以下正则表达式:^(@.+?)\s+?(.*)$

如果该行与正则表达式匹配,您感兴趣的信息将位于第二个捕获组中。 (通常为零索引但位置0将包含整个匹配)。如果你需要,第一个捕获组将包含twitter句柄。

Regex demo here

但是,这与不回复的推文(以@开头)不匹配。在这种情况下,区分常规推文和您不感兴趣的垃圾的唯一方法是将推文限制为字母数字 - 但这可能意味着如果包含任何非字母数字字符,则会遗漏一些推文。如果这不是您的问题,以下正则表达式将起作用:
^(?:(@.+?)\s+?)?([\w\t ]+)$

Demo 2