Regex 尝试在vbscript中使用正则表达式匹配复杂字符串
我在试着匹配我试过的“strid”Regex 尝试在vbscript中使用正则表达式匹配复杂字符串,regex,vbscript,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
.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
我收到了这个,谢谢:)你是想说字母K在你的正则表达式中是可选的吗?如果是,您可以尝试以下方法:
^K?B\d+\s*?-\s*?X\d (.*)$
^KB\d+\s*?-\s*?X\d (.*)$
否则,请使用此选项:
^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] (.*)$
请注意,在我的所有正则表达式中,要捕获的最后一个字符串位于组()内。因此,如果VB库支持,就很容易引用该部分。这个答案出现在低质量的审阅队列中,可能是因为您没有解释代码。如果你真的解释了(在你的答案中),你就更有可能获得更多的选票!