pattern格式(基本通用):

pattern格式

符号

说明

^

匹配开头

$

匹配结尾

.

匹配任意一个字符

[...]

匹配任意一个指定的字符

[^...]

匹配任意一个非指定的字符

*

匹配0个或多个字符前面的字符,没有也算

+

匹配至少一个或多个前面的字符

{n}

匹配n个前面的字符,从1开始

{,n}

匹配最多n个前面的字符

{m,}

匹配至少m个前面的字符

{m,n}

匹配至少m最多n个前面的字符

a|b

匹配a或b

()

匹配组

(?#...)

注释

\w

匹配任意一个字母

\W

匹配任意一个非字母

\d

匹配任意一个数字

\D

匹配任意一个非字符

python正则表达式re

re.match(pattern,string)    #从开头匹配,group()查看匹配项(组)

re.findall(pattern,string)    #匹配全部,返回列表

re.search(pattern,string)      #返回类型,可用于判断,要用group调用

re.sub(pattern,repl,string,count)    #替换

re.split(pattern,string)     #去掉匹配的,把不匹配的分割

实例一(python):

import re
#匹配
str1="z192.168.1.1"
pattern="([0-9]{1,3}\.)([0-9]{1,3}\.)"
result1=re.match(pattern,str1)
if bool(result1):
print("match=",result1.group(0))
else:
print("match fails")
result2=re.search(pattern,str1)
if bool(result2):
print("search=",result2.group(0))
else:
print("search fails")
#替换
str2="asdsasaff"
pattern="a"
fmt="A"
print("replace_all=",re.sub(pattern,fmt,str2,count=0))
print("replace_onlyone=",re.sub(pattern,fmt,str2,count=1))
print("replace_onlytwo",re.sub(pattern,fmt,str2,count=2))
得出:
match fails
search= 192.168.
AsdsAsAff
Asdsasaff
AsdsAsaff

re.compile(pattern)->patternObj

patternObj.match(string,flag)...

C++正则表达式<regex>

类:

basic_regex  包装正则表达式

match_results  包含一系列匹配项

regex_constants  各种类型

函数:

regex_match(string,match_result,regex)   匹配全部,返回布尔

regex_search(string,match_result,regex)     匹配,返回布尔

regex_replace(string,regex,format)    替换所有

regex_replace(string,regex,format,fonly)    只替换一次

完全匹配,返回布尔

basic_regex构造函数

explicit basic_regex(_In_z_ const _Elem *_Ptr,  正则

flag_type _Flags = regex_constants::ECMAScript   匹配模式

)

match_results接受结果:

成员:

match_results::str(size_t)  返回匹配项

match_results::size()   返回匹配项数

匹配常数regex_constants:

元素

BRE

ERE

ECMA

grep

egrep

awk

使用“|”的分支结构

 

+

+

 

+

+

使用“\n”的分支结构

     

+

+

 

定位点

+

+

+

+

+

+

后向引用

+

 

+

+

   

括号表达式

+

+

+

+

+

+

使用“()”的捕获组

 

+

+

 

+

+

使用“\(\)”的捕获组

+

   

+

   

控件转义序列

   

+

     

dsw 字符转义

   

+

     

文件格式转义

   

+

   

+

十六进制转义序列

   

+

     

标识转义

+

+

+

+

+

+

否定断言

   

+

     

否定字边界断言

   

+

     

非捕获组

   

+

     

非贪婪重复

   

+

     

八进制转义序列

         

+

普通字符

+

+

+

+

+

+

肯定断言

   

+

     

使用“{}”的重复

 

+

+

 

+

+

使用“\{\}”的重复

+

   

+

   

使用“*”的重复

+

+

+

+

+

+

使用“?”和“+”的重复

 

+

+

 

+

+

Unicode 转义序列

   

+

     

通配符

+

+

+

+

+

+

字边界断言

   

+

     

具体参照:https://msdn.microsoft.com/zh-cn/library/bb982727.aspx

实例二(C++):

#include<regex>
#include<string>
#include<iostream> using namespace std; int main()
{
//匹配 一个字符串,一个返回,一个正则
string str1 = "192.168.1.1";
std::regex rx("([0-9]{1,3}\.)+",regex_constants::egrep);
match_results<std::string::const_iterator>mr;
std::cout <<"result="<<std::boolalpha<< regex_search(str1,mr, rx)<<std::endl;
std::cout <<"size="<< mr.size()<<std::endl<<"str_group=" <<mr.str() << std::endl;
//替换
string str("asdsasaff");
regex rx2("a");
string fmt("A");
cout <<"replace_all=" <<regex_replace(str, rx2, fmt) << endl;
cout <<"replace_onlyone="<<regex_replace(str, rx2, fmt, regex_constants::format_first_only) << endl;
return ();
}
得出:
result=true
size=
str_group=192.168..
replace_all=AsdsAsAff
replace_onlyone=Asdsasaff

正则表达式python和C++对比的更多相关文章

  1. Go/Python/Erlang编程语言对比分析及示例

    本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,不过最主要的原因是这几个我比较熟悉. Go的很多语言特性借鉴 ...

  2. C++和python的变量对比

    <C++中的this和Python的self对比>基本都是针对函数而言的,从变量的角度看,也有相同之处. C++中,类中定义的变量一般叫做成员变量,或者说是成员属性,它只属于实例对象,只有 ...

  3. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  4. Python、R对比分析

    一.Python与R功能对比分析 1.python与R相比速度要快.python可以直接处理上G的数据:R不行,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析, ...

  5. python正则表达式 Python Re模块

    最近在学python 练习的时候随手写的,方便以后自己参考~如果能对其他同学有所帮助就再好不过了 希望大家指正哦~  我会随时整理的,先这样~ 正则表达式 1.元字符([ ]),它用来指定一个char ...

  6. phython正则表达式 Python Re模块

    反斜杠问题 与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰.假如你需要匹配文本中的字符”\”, Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式 ...

  7. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...

  8. django学习系列——python和php对比

    python 和 php 我都是使用过,这里不想做一个非常理性的分析,只是根据自己的经验谈一下感想. 在web开发方面,无疑 php 更甚一筹. 从某种角度来说,php 就是专门为 web 定制的语言 ...

  9. 安装Ubuntu Server18.04(附与CentOS占用体积和Python版本的对比)

    这边只演示一下最新系统的安装过程,设置之类的和以前讲的Kali以及CentOS大同小异:https://www.cnblogs.com/dunitian/p/4822808.html#linux 和C ...

随机推荐

  1. 原生javascript加载运行

    原生javascript加载运行 (function(){ //TODO sometings }()); 在要运行相应代码的位置加入script标签,创建函数并自执行; 关于window.onload ...

  2. php get_magic_quotes_gpc()函数用法介绍

    magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如包括有:post.get.cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊 ...

  3. JS运动基础(二) 摩擦运动、缓冲运动

    摩擦运动: 逐渐变慢,最后停止 缓冲运动: 与摩擦力的区别:可以精确的停到指定目标点距离越远速度越大速度由距离决定速度=(目标值-当前值)/缩放系数Bug:速度取整值取整: iSpeed = iSpe ...

  4. Mini2440 LED驱动程序设计

    1 LED初始化: 2 LED闪烁设计 位或操作:| 取反操作:~ 位与操作:& http://www.tuicool.com/articles/eQzEJv

  5. pike实现

    快速略读了一下源码,记了一些东西,防老年痴呆.由于整体的源码还没有看得很清楚,所以可能有大量的错误. 首先拿mapping开刀 mapping其实就是C++中的multimap,但是支持更多. arr ...

  6. C#的输入、输出与运算符、数据类型

    (1)Visual Studio.NET起始页 启动Visual Studio.NET后,首先看到一个如下图所示的起始页.在起始页可以打开已有的项目或建立新的项目. (2)新建Visual1C# .n ...

  7. C语言实现简单线程池(转-Newerth)

    有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带来的开销,我们可以使用线程池.下面是一个C语言实现的简单的线程池. 头文件: 1: #ifndef THREAD_POOL ...

  8. squid安装、配置、控制

    Squid 目录 [隐藏]  1 前言 2 安装 2.1 从源中安装 2.2 源码编译安装 3 基本配置 4 高级控制 5 认证 6 总结 6.1 服务器配置 6.2 用户分类 6.3 行为分类 6. ...

  9. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  10. [转]Windows系统中监控文件复制操作的几种方式

    1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得到源和目标文件名. 可以控制拒绝操作. 缺点: 不能对文件进行控制. 只对Shell文件操作有效, 对原生 ...