gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:10:35 26 4
gpt4 key购买 nike

我创建了一个正则表达式来捕获 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

关于c++ - CAtlRegExp 格式的正则表达式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53648314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com