【发布时间】:2012-08-16 16:22:06
【问题描述】:
请帮助我处理正则表达式本身。我正在学习它。我不需要替换代码。
我正在使用 VS2008 (C++) 开发 wxWidget 2.8.12。我想检查 TEST_STRING 是否是浮点数。 (-0.1、0.1、1 等)。我认为表达式本身是正确的,我通过工具检查过。我对 wxWidget 有误吗?
wxString tmpStr = TEST_STRING;
wxRegEx reNegativeFloatNum(_("^[-]?[0-9]*\\.?[0-9]+$"));
bool tmp = reNegativeFloatNum.Compile(tmpStr);
tmp = tmp && reNegativeFloatNum.IsValid();
if ( tmp && reNegativeFloatNum.Matches(tmpStr))
{
//Do something
}
else
{
//Do something else
}
我真正的问题是为什么正则表达式不起作用?如果我输入“a”-“Z”,则 Matches() 返回“真”。有谁知道吗?我只是想学习正则表达式。
【问题讨论】:
-
您的正则表达式表示它可以是负数或正数([-] 后的问号),但文本和主题仅表示负数。是哪个?
-
您正在撰写有关负浮点数的文章,但在您的示例中出现了两种类型的数字 - 正数和负数。您的正则表达式也匹配正数和负数。
-
如果用户不输入'-',我会自动为他添加'-'。
-
我真正的问题是为什么正则表达式不起作用?如果我输入“a”-“Z”,则 Matches() 返回“真”。有谁知道吗?我只是想学习正则表达式。谢谢。
-
Albert,您被否决了,因为 a) 您的问题与 wxWidgets 无关,尽管您已将其标记为 wxWidgets。 b) 有很多关于正则表达式的书籍和在线教程,您似乎都没有费心去阅读。这可能看起来很刻薄,但这里的人们希望您在提问之前准确地标记您的问题并进行一些基础研究。如果您修复了标签并显示出尝试找到问题答案的迹象,那么人们将很乐意为您提供帮助。