1

我有一个简单的 C++、COM 可见、正则表达式实用程序,它根据是否找到匹配项返回真/假。A [A]诸如(借用单元测试中的方法签名)之类的表达式匹配。一个匹配 Excel 范围字符串的好表达式(A1:Z10)工作得很好。但是像这样的表达

This is a long sentence.

[A-Za-Z]*无论有无忽略大小写,都不匹配。我已经尝试了我能想到的变体:(\w[A-Z]*忽略大写设置),.NET 变体 \p...(有些东西,现在不记得了!)。没有任何效果。有趣的是,我在 VS2012 中有两个不同的正则表达式测试器插件,它们都说正则表达式在句子上匹配。

/EDIT/ 不要认为这会有多大帮助,但这里是 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;
    }

嗯...我一定是用错了。

想法?

谢谢。

4

2 回答 2

2

对于您的示例字符串This is a long sentence.,您需要使用量词。

[a-zA-Z\. ]*   matches any character of a-z or A-Z, ' ' and '.' (0 or more times)

识别以下量词。

*      Match 0 or more times
+      Match 1 or more times
?      Match 1 or 0 times
{n}    Match exactly n times
{n,}   Match at least n times
{n,m}  Match at least n but not more than m times
于 2013-10-09T20:48:22.610 回答
0

“这句话很长。” “[A-Z-Z]”

您可能的意思是“[A-Za-z]”//最后一个“z”很小

于 2013-10-09T20:48:11.007 回答