CAtlRegExp 格式的正则表达式不起作用?

Regular Expression in CAtlRegExp format not working?

我创建了一个正则表达式来捕获 Microsoft Office 可执行文件,如下所示:

 .*(\Microsoft Office\Office)(\d){1,2}(\)(WINWORD.EXE|EXCEL.EXE|POWERPNT.EXE|MSACCESS.EXE|OUTLOOK.EXE|VISIO.EXE|WINPROJ.EXE)$

反正我用的软件只支持正则表达式的CAtlRegExp风格,上面的不行

我正在查看以下文章以供参考并使用该工具测试我的正则表达式: https://www.codeproject.com/Articles/13320/Using-Regular-Expressions-in-MFC

示例路径是:

C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE

有人可以帮忙吗?

谢谢。

看来你可以使用

.*\Microsoft Office\Office\d\d?\((WINWORD)|(EXCEL)|(POWERPNT)|(MSACCESS)|(OUTLOOK)|(VISIO)|(WINPROJ))\.EXE$

这里的要点是 (...) 中的所有替代项也必须用括号括起来,并且正则表达式风格不支持有限的(间隔)量词,并且 {...} 定义了一个 使用从零开始的 ID 捕获组\d\d? 匹配 1 或 2 个数字。见 docs you refer to:

You can note that the syntax is not exactly the same as in Perl. For example, the grouping operator is {}, while in Perl it is (), and it doesn't have the {n} (match exactly n times) as in the Perl syntax

另请注意,文字点应使用 \. 定义,最好在所有分组选项后仅使用一个 \.EXE