【发布时间】:2013-10-09 20:41:56
【问题描述】:
我有一个简单的 C++、COM 可见、正则表达式实用程序,它根据是否找到匹配项返回真/假。 A[A](借用单元测试中的方法签名)之类的表达式匹配。匹配 Excel 范围字符串 (A1:Z10) 的一个很好的表达式可以正常工作。但是像
This is a long sentence.
[A-Za-Z]* 有或没有忽略大小写,将不匹配。我尝试了我能想到的变体:\w[A-Z]*(忽略大写设置),.NET 变体 \p...(有些东西,现在不记得了!)。没有任何效果。有趣的是,我在 VS2012 中有两个不同的正则表达式测试器插件,它们都说正则表达式在句子上匹配。
/编辑/ 不要认为这会有多大帮助,但这里是 C++ 代码的操作部分:
<!-- language: lang-cpp -->
varRegex.ChangeType(VT_BSTR);
using namespace std::regex_constants;
wregex regexPredicate((wchar_t*)varRegex.bstrVal, ECMAScript|icase);
if (varValue.vt == VT_BSTR)
{
pRetVal->vt = VT_BOOL;
pRetVal->boolVal = std::regex_match( static_cast<wchar_t*>(varValue.bstrVal), regexPredicate )
? VARIANT_TRUE : VARIANT_FALSE;
}
嗯……一定是我用错了。
想法?
谢谢。
【问题讨论】:
-
[A-Za-z] 这个正则表达式匹配所有字母的大小写
-
您能否在您的问题中添加一些代码,尤其是关于您如何应用正则表达式的代码?
标签: c# c++ regex unit-testing com