21xrx.com
2024-12-22 21:49:33 Sunday
登录
文章检索 我的文章 写文章
C++正则表达式匹配数字
2023-06-28 21:45:57 深夜i     --     --
C++ 正则表达式 匹配 数字

C++是一门广泛应用于程序设计的高级编程语言,而正则表达式是一种用来匹配字符串的强大工具。其中,可以通过正则表达式来匹配数字,以下是在C++中使用正则表达式匹配数字的方法。

首先,需要导入正则表达式库头文件#include 。接着,可以通过regex_match函数来进行匹配操作。该函数的原型为bool regex_match(const std::string& input, std::regex re),其中input表示待匹配的字符串,re表示正则表达式。

通过以下代码可以匹配一个整数:


std::regex re("-?[1-9]\\d*|0"); // 匹配整数

std::string str = "123";

if ( std::regex_match(str, re) )

 std::cout << "匹配成功!" << std::endl;

解析:

-?表示可能存在负号,[1-9]表示第一位为1~9的数字,\\d*表示接下来可能出现0到多个数字,|0表示或者为0。

上述代码中定义了一个正则表达式re,用于匹配整数。如果输入的字符串符合规则,即匹配成功,程序将输出“匹配成功!”

除了匹配整数外,还可以使用正则表达式匹配其他数字类型,如小数、科学计数法表示的数字等等。具体方法与上述代码相似,只需更改正则表达式即可。下面给出一些示例:

匹配小数:


std::regex re("-?[1-9]\\d*\\.\\d+|0\\.\\d*[1-9]\\d*"); // 匹配小数

std::string str = "3.14";

if ( std::regex_match(str, re) )

 std::cout << "匹配成功!" << std::endl;

解析:

-?表示可能存在负号,[1-9]表示第一位为1~9的数字,\\d*表示接下来可能出现0到多个数字,\\.表示小数点,\\d+表示接下来至少一个数字(即小数点后必须有数字),|0\\.表示或者为0开头的小数,\\d*[1-9]\\d*表示小数点后面的数字。

匹配科学计数法表示的数字:


std::regex re("-?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?"); // 匹配科学计数法表示的数字

std::string str = "3e4";

if ( std::regex_match(str, re) )

 std::cout << "匹配成功!" << std::endl;

解析:

-?表示可能存在负号,(?:0|[1-9]\\d*)表示匹配0或1~9开头的数字,\\d*表示接下来可能出现0到多个数字,(?:\\.\\d*)?表示小数点后面跟着可选的0到多个数字,(?:[eE][+\\-]?\\d+)?表示科学计数法的指数部分,[eE]表示e或E,[+\\-]?表示可能有+或-号,\\d+表示紧随其后的指数值。

总结:正则表达式在C++中的应用十分广泛,尤其是在字符串匹配方面。通过学习与掌握正则表达式,可以更加高效地完成字符串匹配及替换等任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复