VBScript RegEx不匹配

时间:2016-01-28 18:39:21

标签: regex vbscript

我对RegExp的工作方式感到有些困惑。我很高兴使用它来使用记事本++之类的东西来搜索字符串,但是我现在正试图在VBScript中搜索字符串,而在记事本++中工作的RegExps似乎与VBScript不兼容。我错误地认为regexp是一种标准。反正。

我试图搜索的字符串是:
"kcabllaCsrevirD - ) 0x0 = TLUSERH ( 'FNI.TRWTS\049BE47424A6-2898-65A4-3538-602212F0\#\$1#40C0010B$gkPrevirD_O_\10RPAFJUOS\\' egakcaP revirD 8202=DI

我试图确定:
FNI.TRWTS\

使用记事本++,并按照this MSDN article中的说明尝试按照sytax提出: .*?fni\..*?\\

有人能指出我在正确的方向吗?我在VB中有其他的正则表达式,所以我很高兴我的VB没问题。

对于字符串的某些背景 - 我已经从DISM日志中反转了一行文本并尝试提取驱动程序名称,因此希望选择fni.*然后将其反转回{ {1}}。我这样做的原因是虽然我可以获得正则表达式搜索非贪婪(*.inf)但我似乎无法找到最后匹配的方法。

.*?

1 个答案:

答案 0 :(得分:2)

请注意,Notepad ++使用非常强大的Boost正则表达式库,VBScript使用类似于JavaScript支持的非常古老的正则表达式库(与Boost相比,它非常有限)。但是,非常基本的模式也是一样的。

要匹配以fni.开头并以\开头的子字符串,您可以使用

\bfni\.[^\\]*\\

请参阅regex demo

\b迫使fni成为一个完整的词。 [^\\]匹配任何字符,但\*匹配零次或多次,\\匹配一个\

如果设置RegExp.Execute,则objRegEx2.Global = True会返回所有匹配,因此没有设置循环的点。