什么是正则表达式相当于'修剪'用于VB和Java等语言的函数。?

时间:2017-07-25 17:02:59

标签: regex access-vba

我在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

... debugger

1 个答案:

答案 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

...描述了我们仓库中的啤酒案例。 = - )