我有一个简单的C ++,COM-visible,regex实用程序,它返回true / false,具体取决于它是否找到匹配项。像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;
}
嗯......我必须使用不正确。
思想?
感谢。
答案 0 :(得分: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
答案 1 :(得分:0)
“这是一个长句。” “[A-ZA-Z]”
你可能意味着“[A-Za-z]”//最后“z”很小