尝试在vbscript中使用正则表达式匹配复杂的字符串

时间:2015-06-26 14:00:27

标签: regex vbscript

我正在尝试匹配“strid”我试过

.Pattern    = "^[\B]{1,}\[0-9]\s\-\s[P][0-9]\s*" 

模式但不起作用。

strid = "KB299817 - X3 any string i want"
  Set re = New RegExp
  With re
      .Pattern    = "^[\B]{1,}\[0-9]\s\-\s[X][0-9]\s*"
      .IgnoreCase = False
      .Global     = False
  End With

2 个答案:

答案 0 :(得分:0)

strid = item1.Subject
Set re = New RegExp
With re
    .Pattern    = "^B[A-Z][0-9][0-9][0-9][0-9][0-9][0-9]\s\-\s[P][0-9]\s*"
    .IgnoreCase = False
    .Global     = False
End With 

我得到了这个感谢:)

答案 1 :(得分:0)

你想说你的正则表达式中字母K是可选的吗?如果是这样,你可以尝试这个:

^K?B\d+\s*?-\s*?X\d (.*)$

否则,请使用以下内容:

^KB\d+\s*?-\s*?X\d (.*)$

对于上面两个正则表达式,\ s *?考虑到正则表达式的性能,这只是一种指定你可能有更多那个空间但是以非贪婪方式的方法。如果您始终确定只有一个空格,则可以将其指定为:

^KB\d+ - X\d (.*)$

如果VB不支持像\ d或\ s这样的现代语法,你可能想要像这样使用

^KB[0-9]+ - X[0-9] (.*)$

请注意,在我的所有正则表达式中,要捕获的最后一个字符串位于group()中。因此,如果VB库支持它,将很容易引用该部分。