Qt 中的不匹配数字正则表达式
Non matching number Regex in Qt
我正在为q Qt计算器开发一个数字解析器。我创建了一些正则表达式以匹配不同类型的数字:
配给 : ^[+-]?d+/[+-]?d+$
整数 : ^[+-]?d+.?0*$
真实 : ^[+-]?d*.0*[1-9][0-9]*$
复合体 : ^[+-]?[0-9]*(.[0-9]*|/[+-]?[0-9]+)?$[+-]?[0-9]*(.[0-9]*|/[+-]?[0-9]+)?$
我尝试在QString上使用以下功能使用它们:
解析器.h :
bool isRationnal(const QString s)
{
QRegExp ratioExp ("^[+-]?d+/[+-]?d+$");
return ratioExp.exactMatch(s);
}
bool isInteger(const QString s)
{
QRegExp regExp ("^[+-]?d+.?0*$");
return regExp.exactMatch(s);
}
bool isReal(const QString s)
{
QRegExp regExp ("^[+-]?d*.0*[1-9][0-9]*$");
return regExp.exactMatch(s);
}
bool isComplex(const QString s)
{
QRegExp regExp ("^[+-]?[0-9]*(.[0-9]*|/[+-]?[0-9]+)?$[+-]?[0-9]*(.[0-9]*|/[+-]?[0-9]+)?$");
return regExp.exactMatch(s);
}
bool isNumber(const QString s){
bool ok=false;
s.toInt(&ok);
return ok;
}
<小时 />主.c :
QString test ="6/90";
if(isReal(test))
printf("realn");
if(isInteger(test))
printf("Integern");
if(isRationnal(test))
printf("Rationnaln");
if(isNumber(test))
printf("Numbern");
else printf("et merden");
QRegExp ratioExp ("^[+-]?d+/[+-]?d+$");
QRegExp IntExp ("^[+-]?d+.?0*$");
QRegExp RealExp ("^[+-]?d*.0*[1-9][0-9]*$");
QRegExp CplxExp ("^[+-]?[0-9]*(.[0-9]*|/[+-]?[0-9]+)?$[+-]?[0-9]*(.[0-9]*|/[+-]?[0-9]+)?$");
if(ratioExp.isValid())
printf("ratio validen");
if(IntExp.isValid())
printf("int validen");
if(RealExp.isValid())
printf("real validen");
if(CplxExp.isValid())
printf("cplx validen");
return 0;
}
我尝试使用几个 QString 运行此代码,这些 QString 是数字,但它通常会失败。特别是:如果只有一个像test="4"这样的caracter,它不会用数字进行数学运算。
你知道为什么这些布尔函数失败吗?也许我使用了错误的Qt函数,但是在尝试了几个之后,这个看起来像我正在寻找的。
随意提出建设性的批评,
谢谢
泰奥菲尔
你的表达式很好,但d
替换为\d
。在我的程序中测试了您的代码。我真的推荐这个网站,它可以在线调试你的表达式。
Qt官方文档的详细信息:
注意:C++编译器转换字符串中的反斜杠。要包括 \ 在正则表达式中,输入两次,即 \。匹配反斜杠 字符本身,输入四次,即\\。
相关文章:
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 查找中间两个数字的正则表达式的匹配项
- 正则表达式,包含名称 + "string" + 数字,没有其他内容
- 正则表达式匹配字符串之间的数字
- 使用正则表达式C++计算数字中的十进制空格
- C ++正则表达式允许用点分隔的数字
- 如何使用正则表达式将输入数字格式化为字符串
- 如何编写正则表达式以匹配以下数字格式?
- 正则表达式,捕获 4 个被 括起来的数字.或行开始/结束
- 如何为字符串编写正则表达式,其中包含一个数字至少一个数字,并且不包含任何字母
- 正则表达式使用数字作为标记拆分单词
- Qt 中的不匹配数字正则表达式
- C++11正则表达式:在替换字符串中捕获组后的数字
- 用于匹配字母数字的可移植正则表达式
- 正则表达式 找不到数字序列
- 正则表达式:仅限数字 + 字母数字 + 特殊字符
- 如何准备一个在匹配时转义部分数字的正则表达式
- 从字符串中提取数字(正则表达式 C++)
- 正则表达式字母数字和符号 [-*/]
- 检查输入字符串是否为数字且为C++,如果是,则将其转换为 int(正则表达式?