我正在寻找一个vba代码来提取3个单词之前和3个单词之后的单词。例如:C6包含" Blah blah。这五个红苹果是如此好等等等等#34;。所以这里"苹果"是某个词。所以新专栏应该有#34;这五个红苹果非常好"。如果有像" Blah Blah这样的话。这些苹果真是太好了等等等等。然后它应该只提取"这些苹果非常好"不应考虑之前或之后的任何事情。如果可能的话,苹果的任何扩展应该被视为特定的单词。我在python中看到了一些代码,但这可能在vba代码和可能的vba代码中。非常感谢任何帮助。
答案 0 :(得分:0)
似乎是一个有效的正则表达式应用程序和SO的问题(虽然它可以使用重写并显示更多尝试的东西)。试一试。从A列中的文字开始,如下所示:
为" Microsoft VBScript正则表达式5.5"
添加对项目的引用然后运行此代码:
Private Sub splitUpRegexPattern()
Dim regEx As New RegExp
Dim strPattern As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A3")
For Each c In Myrange
strPattern = "(?:\w+\W+){3}(apples)\W+(?:\w+\W+){3}"
If strPattern <> "" Then
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Set matches = regEx.Execute(c.Value)
On Error Resume Next
c.Offset(0, 1).Value = matches.Item(0)
End If
Next c
End Sub
结果:
在VBA中需要Regex的帮助?查看this post即可开始使用。