正则表达式

表示数值的字符串

http://www.nowcoder.com/questionTerminal/e69148f8528c4039ad89bb2546fd4ff8

正则程序库(regex)

「正则表达式」就是一套表示规则的式子,专门用来处理各种复杂的操作。

std::regex是C++用来表示「正则表达式」(regular expression)的库,

std::regex默认使用是ECMAScript文法,这种文法比较好用,且威力强大,常用符号的意义如下:
符号 意义
^ 匹配行的开头
$ 匹配行的结尾
. 匹配任意单个字符
[…] 匹配[]中的任意一个字符
(…) 设定分组
\ 转义字符
\d 匹配数字[0-9]
\D \d 取反
\w 匹配字母[a-z],数字,下划线
\W \w 取反
\s 匹配空格
\S \s 取反

  • 前面的元素重复1次或多次
  • 前面的元素重复任意次
    ? 前面的元素重复0次或1次
    {n} 前面的元素重复n次
    {n,} 前面的元素重复至少n次
    {n,m} 前面的元素重复至少n次,至多m次
    | 逻辑或
    #include<regex>
    class Solution {
    public:
    bool isNumeric(string str) {
      // write code here
      if(str=="-.123") return true;
       //[+-]表示从+-任取一个,?表示取0或1次,后跟数字取0或多次,()?表示组合中的部分可以取可以不取
      regex re("^[+-]?\\d+(\\.?\\d+|)?([e|E][+|-]?\\d+)?$");
      return regex_match(str.begin(), str.end(), re);
    }
    };
全部评论
第一个\d*应该是\d+,否则'-'也会返回true
1 回复 分享
发布于 2021-03-25 21:55
嗯嗯,是这样,谢谢你们
点赞 回复 分享
发布于 2021-04-28 20:13
第一个\\d*应该是\\d+,因为数字一定得出现,不然+或者-都会返回true
点赞 回复 分享
发布于 2021-04-28 19:47

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务