我对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
)但我似乎无法找到最后匹配的方法。
.*?
答案 0 :(得分:2)
请注意,Notepad ++使用非常强大的Boost正则表达式库,VBScript使用类似于JavaScript支持的非常古老的正则表达式库(与Boost相比,它非常有限)。但是,非常基本的模式也是一样的。
要匹配以fni.
开头并以\
开头的子字符串,您可以使用
\bfni\.[^\\]*\\
请参阅regex demo
\b
迫使fni
成为一个完整的词。 [^\\]
匹配任何字符,但\
,*
匹配零次或多次,\\
匹配一个\
。
如果设置RegExp.Execute
,则objRegEx2.Global = True
会返回所有匹配,因此没有设置循环的点。