gpt4 book ai didi

VBA 中的正则表达式 : Break a complex string into multiple tokens?

转载 作者:行者123 更新时间:2023-12-04 20:20:31 27 4
gpt4 key购买 nike

我正在尝试使用 Excel 2000/2003 将 mmCIF 蛋白质文件中的一行解析为单独的标记。最坏的情况它可能看起来像这样:

token1 token2 "token's 1a',1b'" 'token4"5"' 12 23.2 ? . 'token' tok'en to"ken

这应该成为以下标记:
token1  
token2
token's 1a',1b' (note: the double quotes have disappeared)
token4"5" (note: the single quotes have disappeared)
12
23.2
?
.
token (note: the single quotes have disappeared)
to'ken
to"ken

我正在寻找RegEx是否甚至可以将这种行拆分为 token ?

最佳答案

不错的拼图。谢谢。

这种模式(下面的aPatt)将标记分开,但我不知道如何删除外引号。

tallpaul() 产生:

 token1
token2
"token's 1a',1b'"
'token4"5"'
12
23.2
?
.
'token'
tok'en
to"ken

如果您能弄清楚如何丢失外部引号,请告诉我们。
这需要引用“Microsoft VBScript 正则表达式”才能起作用。
Option Explicit
''returns a list of matches
Function RegExpTest(patrn, strng)
Dim regEx ' Create variable.
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
Set RegExpTest = regEx.Execute(strng) ' Execute search.
End Function

Function tallpaul() As Boolean
Dim aString As String
Dim aPatt As String
Dim aMatch, aMatches

'' need to pad the string with leading and trailing spaces.
aString = " token1 token2 ""token's 1a',1b'"" 'token4""5""' 12 23.2 ? . 'token' tok'en to""ken "
aPatt = "(\s'[^']+'(?=\s))|(\s""[^""]+""(?=\s))|(\s[\w\?\.]+(?=\s))|(\s\S+(?=\s))"
Set aMatches = RegExpTest(aPatt, aString)

For Each aMatch In aMatches
Debug.Print aMatch.Value
Next
tallpaul = True
End Function

关于VBA 中的正则表达式 : Break a complex string into multiple tokens?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com