String 从单个字符串中分离复杂文本和数字模式

String 从单个字符串中分离复杂文本和数字模式,string,excel,vba,sorting,String,Excel,Vba,Sorting,我有一个类似这样的文本文件(但有数百行): 我创建了一个代码,将文本文件中的所有内容逐行提取出来,去掉开头的数字并保存下一部分(即糖浆:DR.PEPPER 5GALLON/BOX,万能覆盆子FIL 40#)到Mid(nextLine,10,30)。我想把那部分分成两部分,把名字(糖浆:DR.PEPPER,万能覆盆子丝),大小(5GALLON,40#)这个大小的数字(如果是12/1#=12x1lb)和单位(BOX,LB)。正如你所看到的,几乎每一行都不同,但有许多相似之处。我不确定下一步该怎么办。

我有一个类似这样的文本文件(但有数百行):

我创建了一个代码,将文本文件中的所有内容逐行提取出来,去掉开头的数字并保存下一部分(即
糖浆:DR.PEPPER 5GALLON/BOX
万能覆盆子FIL 40#
)到
Mid(nextLine,10,30)
。我想把那部分分成两部分,把名字(
糖浆:DR.PEPPER
万能覆盆子丝
),大小(
5GALLON
40#
)这个大小的数字(如果是
12/1#
=
12x1lb
)和单位(
BOX
LB
)。正如你所看到的,几乎每一行都不同,但有许多相似之处。我不确定下一步该怎么办。我一直在尝试使用:

re.Pattern = "GALLON|BOX|#|LF|GAL|EA|CS|BTLS"  
我想把单位部分拔出来,但我不知道还能做什么

以下是我到目前为止为这一部分编写的代码:

 Function NumericOnly(s As String) As String
 Dim StrUnit As String
 Static re As RegExp
 If re Is Nothing Then Set re = New RegExp
 re.IgnoreCase = True
 re.Global = True
 re.Pattern = "GALLON|BOX|#|LF|GAL|EA|CS|BTLS"
 StrUnit = re.Replace(s, "")
 End Function

你试过正则表达式吗?是的,但我唯一能想到的是:re.Pattern=“galler | BOX |#| LF | GAL | EA | CS | BTLS”你应该发布实际的正则表达式。编辑:或者这就是你正在使用的?Edit2:选中。函数NumericOnly(s作为字符串)作为字符串Dim StrUnit作为字符串Static re作为RegExp如果re为空,则设置re=New RegExp re.IgnoreCase=True re.Global=True re.Pattern=“gallen | BOX | LF | GAL | EA | CS | BTLS”StrUnit=re.Replace(s)”。结束函数对列的文本不起作用吗?您可以迭代并运行它三次,也可以运行任意多次来拆分内容。。。如果你想避开正则表达式,我想。
 Function NumericOnly(s As String) As String
 Dim StrUnit As String
 Static re As RegExp
 If re Is Nothing Then Set re = New RegExp
 re.IgnoreCase = True
 re.Global = True
 re.Pattern = "GALLON|BOX|#|LF|GAL|EA|CS|BTLS"
 StrUnit = re.Replace(s, "")
 End Function