我在Microsoft Access 2007数据库中使用Regex,其中VBA项目引用了Microsoft VBScript Regular Expressions 5.5。
一切都很好......主要是。我想知道一个正则表达式,就像“修剪”一样。功能..? (删除前导和尾随空格)
我有这个:((?:。?)*)这是"在最后一场比赛后捕获所有内容"。但它总是匹配我想删除的额外空格。
下面是相关代码,后面是调试器的屏幕截图。子匹配中的第4项有" CAN&#34 ;.如何使用正则表达式删除空格,因此我不必使用修剪功能..?
pattern = "^(\d{1,2})(?:\/)(\d{1,2}(?:\.\d{1,3})?)(OZ)((?:.?)*)"
regex.pattern = pattern
Set matchCollection = regex.Execute(workstring)
If matchCollection.Count > 0 Then
matchSection = "LOOSE CASES"
itemtype = "CASE"
percase = matchCollection(0).SubMatches(0)
perpack = 1
unitsize = matchCollection(0).SubMatches(1)
uom = matchCollection(0).SubMatches(2)
other = VBA.Trim(matchCollection(0).SubMatches(3))
End If
答案 0 :(得分:0)
好的,我终于明白了。重申(并澄清):我的原始正则表达式((?:。?)*)意味着"捕获最后一场比赛后留下的任何东西"。但它也捕获了领先和尾随空格。
删除前导空格相当容易,但每次删除尾随空格的尝试都被组中的*挫败了。然后我阅读了关于\ b并删除了一个,现在它可以工作。
这就是我现在所拥有的:(?:?)((?:。?)*)\ b(?:*),它是"匹配最后一场比赛后留下的任何东西,除了前导或尾随空格& #34;
在上下文中,这就是整个......
(\ d {1,2})/(\ d {1,2})PK - (\ d {1,2}(?:?\ d {1,3}))(OZ | ML )(?:?)((?:。?)*)\ b(?:*)
这意味着匹配像这样的字符串......
2 / 12PK-11.125OZ CAN RET
...描述了我们仓库中的啤酒案例。 = - )