regex.h不是标准的C或者C++库
c语言: 许多的linux都会带有regex库,windows的则没有,需要gnuwin搞过来编译使用
c++:需要C++11及以上
表达式语法差异
大体上的正则表达式是差不多的,但使用过程中,遇到一些小坑,且记录下来。
1.表达式: .*
大部分语言(包括c++的regex库)的该表达式含义:匹配非换行符号的任意字符
c语言的regex库:匹配任意字符(包括换行符号)
2.表达式: [\\s\\S]
大部分语言(包括c++的regex库)的该表达式含义:匹配任意字符(包括换行符号)
c语言的regex库:匹配字符s,S和\
好像本质设计就是有歧义的
3.表达式: \t
大部分语言(包括c++的regex库)的该表达式含义:匹配制表符
c语言的regex库:匹配字符t
就很神奇,c语言如果想要匹配\t的制表符,需要使用8进制书写方式,如\011
语法糖用法不同
这个没啥可说的,c语言提供的函数就regcomp,regexec,regerror。
没有类似c++的字符串的匹配替换regex_replace,循环匹配同一个正则表达式的sregex_iterator等之类的函数