Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 尝试在vbscript中使用正则表达式匹配复杂字符串_Regex_Vbscript - Fatal编程技术网

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

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

我在试着匹配我试过的“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

我收到了这个,谢谢:)

你是想说字母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库支持,就很容易引用该部分。

这个答案出现在低质量的审阅队列中,可能是因为您没有解释代码。如果你真的解释了(在你的答案中),你就更有可能获得更多的选票!