使用VBScript Regular Expressions 5.5的VBA程序突然崩溃求助
VBScript正则表达式5.5底层断言失败导致VBA项目崩溃
我有一个已稳定运行10至15年的复杂VBA项目,此前从未出现问题。但今日该项目突然崩溃,弹出非VBA错误提示,推测问题与VBScript Regular Expressions 5.5引用的底层代码相关:
Microsoft Visual C++ Runtime Library
Assertion failed!
Program: ...
File: g:\vba\src\65_VC8\VBA\rt\regexpbase.cxx
Line: 2063Expression: ibLim == m_ibMin
有关程序引发断言失败的信息,请参阅Visual C++文档中的断言相关内容
(按重试可调试应用程序 - 需启用JIT)
[中止] [重试] [忽略]
以下代码片段可在我的计算机上复现问题(此代码使用早期绑定,但使用晚期绑定也会出现相同错误):
Option Explicit Sub due() Dim RE As RegExp Const sPATepi As String = "(?!.*sample)\\([^\\]+)\\(S\d\d(?:E\d{2,3}(?:-E?\d{2,3})?)+)\\(.*)(?=\.(?:mkv|avi|mp4|wmv)$)" Const Test As String = "\\DS718\Video\TV Shows\Death in Paradise\S14E08\Episode 8 720p HDTV.mkv" Set RE = New RegExp With RE .Global = True .IgnoreCase = True .Pattern = sPATepi .Multiline = True End With 'Crashes if result = True Debug.Print RE.Test(Test) End Sub
RE.Test(Test)在正则测试工具中返回True(该程序多年来一直如此)。简单的正则表达式不会出现此问题(例如pattern = "\d+"会返回True且不会崩溃)。我已运行DISM但未发现错误,实在不知道该如何进一步调试。
内容的提问来源于stack exchange,提问作者Ron Rosenfeld
相关产品推荐
相关产品推荐


