我创建了一个正则表达式来捕获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
有人可以协助吗?
谢谢。
答案 0 :(得分:3)
您似乎可以使用
.*\\Microsoft Office\\Office\d\d?\\((WINWORD)|(EXCEL)|(POWERPNT)|(MSACCESS)|(OUTLOOK)|(VISIO)|(WINPROJ))\.EXE$
这里的要点是(...)
中的所有替代项也必须用括号括起来,并且正则表达式风格不支持有限的(间隔)量词,并且{...}
定义了捕获组< / em>和从零开始的ID。 \d\d?
匹配1或2位数字。参见docs you refer to:
您可以注意到语法与Perl中的语法不完全相同。例如,分组运算符为{},而在Perl中为(),并且不具有Perl语法中的{n}(精确匹配n次)
还请注意,应使用\.
定义文字点,并且在所有分组的替代项之后仅使用一个\.EXE
是个好主意。