regex - float - 正则表达式

标签 regex qt

我很难理解这个简单的正则表达式。我有以下尝试:

[0-9]*\.?[0-9]*

我将其理解为零到多的数字,然后是一到零的句点,最后以零到多的数字结束。

我不想匹配上面以外的任何东西。我不想要正面/负面支持或任何其他特殊支持类型。但是,出于某种原因,上面的内容也匹配看似随机的字符。无论出于何种原因,以下所有内容都匹配:

  • f32
  • 32a
  • 32-
  • =33

在答案中,我正在寻找:

  • 解释为什么我的正则表达式不起作用。
  • 一个工作版本,并解释它为什么工作。

编辑:由于似乎造成了麻烦,我添加了“QT”标签,这是我正在使用的环境。

编辑:由于持续的困惑,我将添加一些代码。我开始认为我要么误用了 QT,要么 QT 有问题:

void subclassedQDialog::setupTxtFilters()
{
    QRegExp numbers("^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$");
    txtToFilter->setValidator(new QRegExpValidator(numbers,this));
}

这是从子类 QDialog 中得到的。 txtToFilter 是一个 QLineEdit。如果有人可以提出可能相关的建议,我可以提供更多代码。虽然上面的表达式不是原始表达式,但它是下面评论中的表达式之一,也以同样的方式失败。

最佳答案

你的问题是你没有正确转义\,你需要把\\.否则 C++ 编译器将删除\(至少 gcc 会这样做,并带有警告)并且正则表达式引擎将处理 .作为任何角色。

关于regex - float - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8775011/

相关文章:

regex - 我在 GNU sed 中的前瞻正则表达式有什么问题?

c# - YouTube网址的正则表达式验证-字段是根据需要的可选返回

c - GNU regex.h 中 re_match 的意外结果,我错过了什么吗?

python - PyDev 无法识别 PyQt5

qt - 如何在 QML 中引用调用对象

c++ - 在按下 QPushbutton 时做一些事情

javascript - 简单的正则表达式 : multiple dots(. )

Java 正则表达式和 PathMatcher

qt - 有没有一种优雅的方式来公开子窗口小部件的插槽?

c++ - 如何使用 Qt/c++ 为所有 UNIX 操作系统创建托盘图标?