VBScript正则表达式问题

VBScript正则表达式问题

问题描述:

我有一些严重的问题,试图让我的正则表达式正常工作,试图提取UNC路径。我已经阅读了无数的教程,指南,甚至在线正则表达式测试人员(他们似乎在工作)测试了我的正则表达式,但是仍然无法在我的代码中使用它。但是,我可以让它在PHP中工作。VBScript正则表达式问题

我正在使用PrimalScript来试图看看出了什么问题,以后再说。这里是我当前的代码我使用的:

Dim WSHShell, strString, nrMatches, myMatches 

Set WSHShell = CreateObject("WScript.Shell") 
Set myRegExp = New RegExp 
myRegExp.IgnoreCase = True 
myRegExp.Global = True 
' myRegExp.Pattern = "^\\\\(.*?)+\\(.*)*\s...\\(.*)*$" <-- Returns 1 match, the whole String 
' myRegExp.Pattern = "^\\\\(\w?)+\\(\w)*\s...\\(\w)*$" <-- Returns 0 matches 
' myRegExp.Pattern = "^\\\\(.*?)+\\\(.*)*\s...\\\(.*)*$" <-- Gives Syntax Error 
' myRegExp.Pattern = "^\\\\\\\\(.*?)+\\\(.*)*\s...\\\(.*)*$" <-- Gives Syntax Error 
' myRegExp.Pattern = "^\\\\(.*)\\(.*)\s\.\.\.\\(.*)?$" <-- Returns 1 match, the whole String 
myRegExp.Pattern = "^(.*)+\\(.*)+(\s\.\.\.\\(.*))?$" ' <-- Returns 1 match, the whole String 

strString = "\\domain.subnet.net\share1 ...\share2" 

Set myMatches = myRegExp.Execute(strString) 
nrMatches = myMatches.Count 
MsgBox "Found " & nrMatches & " Matches!", vbOKOnly, "Number of Matches" 
For Each myMatch In myMatches 
    MsgBox "Value: " & myMatch.Value, vbOKOnly, "Found Match" 
Next 
WScript.Quit 

的评论正则表达式的是什么,我已经试过只是一小部分,这些是那些我有“最” sucess用。吸引我眼球

的一件事是,而在PrimalScript调试,它基本上跟我说的参数 谷歌搜索就可以了myMatches.Item =无效的号码给了我什么,虽然,但也许这里有人知道什么参数来执行需要吗? 如果有必要,我可以提供它的截图,只是让我知道。

谢谢,我会感谢任何指针或技巧,帮助我得到这个打算=]

我不知道你在期待什么。

是否在2场比赛中得到strString = "\\domain.subnet.net\share1 ...\share2"? (会... \ share2是一个有效的路径吗?)

如果有由空格分隔字符串中的唯一路径,那么你可以尝试:

[^\s]+看到rubular

[\\\w.]+看到rubular

,或者如果它有从\\.

(?<=\A|\s)(?:\\|\.)[^\s]+看到Regexr(因为rubular不支持看屁股)

UPDATE:

根据您的意见,我希望这会做你想要什么:

^((?:\\|\.)[^\s]+)\\[^\\\s]+\s+\.{3}([^\s]*) 

Rubular

您会发现组1中的最后一个\以及后面的部分...在组2.所以要得到你的替代品,你只需要连接组1和组2。

+0

@Stema另一个澄清:股份也可能是多个深度,这意味着如果字符串我“\\ domain.subnet.net \ share1 \ share2 .. 。\ share3“,我想提取份额3并用它替换份额2。换句话说,目的是映射(在这种情况下)\\ domain.subnet.net \ share1 \ ** share2 **和\\ domain.subnet.net \ share1 \ ** share3 ** – Exodus 2011-05-06 09:26:50

+0

嘿@Stema,从我所了解的情况来看,VBScript不允许看起来落后(请参见http://www.regular-expressions.info/vbscript.html) - 这可能是什么原因造成的?另外,你的第二个Regexr建议会引发我一个“正则表达式中的语法错误”。为了澄清我的意图,我需要重新组合这两个股份。三个并发点(... \)表示直到最后一个文件夹的所有内容都应该相同。我认为尝试使用正则表达式来提取数据并操作它会容易得多。也许最好的办法是分步实施? – Exodus 2011-05-06 09:28:02

+0

@Daniel,对不起,我没有证实,阅读VB ...我想到.net,这将支持看后面。然后在这里试试[Rubular](http://www.rubular.com/r/ykN20h8FPZ)'(?:^ | \ s)((?:\\ | \。)[^ \ s] +)'。背后的观点只是为了避免这会导致结果。有了这个正则表达式,领先的空间也是匹配的,但我把你的路径放到了第一个捕获组中。我也替换了VBScript不支持的'\ A'。 – stema 2011-05-06 09:32:03

请问是这样的帮助呢?

http://regexlib.com/REDetails.aspx?regexp_id=2396

他们似乎暗示

^[A-ZA-Z] \:\。 |^\\。

我也看到 : - |(\\ [ - \ d \ W \] +) INA谷歌搜索(<(\\ [\ d \ W \\ S] +)>?)。

+0

嗨@mikeY,让我匹配\域,\ share1和\ share2。关闭,但还没有。我会尝试修改你的建议,看看它是否工作:) – Exodus 2011-05-06 10:49:58