正则表达式学习笔记

正则表达式

  • 由表达式(元素)、量词、断言组成

  • 组成

    元素含义
    .匹配除换行符以外任意字符
    \d匹配一个数字
    \D匹配一个非数字
    \s匹配任意空白字符
    \S匹配非空白字符
    \w匹配字母、数字、下划线、汉字
    \W匹配 非 \w 字符
    \r 、\n匹配ASCII的回车、换行
    量词含义
    [ ]包含一系列字符
    [^ ]包含之外一系列字符
    S{n}匹配表达式重复n次,相当于{n, n}
    S{m, }匹配至少m次
    S{, n}匹配至多n次,相当于S{0, n}
    S{m, n}匹配表达式至少m次,至多n次
    S?匹配表达式0次或者1次,相当于S{0, 1}
    S+表达式至少出现1次,相当于{1, }
    S*表达式出现任意次,相当于{0, }
    断言含义
    ^匹配字符串开始
    $匹配字符串的结束
    \b单词的边界(开始或结尾 )
    \B非单词的边界,当"\b"为false时,它为true
    ?=S表达式后面紧跟S才匹配
    ?!S表达式后面没有S才匹配
    • 经典实例实例
unicode范围类型
\u4e00-\u9fa5汉字
\u0030-\u0039数字
\u0041-\u005a大写字母
\u0061-\u007a小写字母
\uAC00-\uD7AF韩文
\u3040-\u31FF日文
  • IP地址
    IP地址

QT使用正则表达式

QRegExp类使用

QString str = "wcx39";
QRegExp re("^(\\D*)(\\d*)$"); //创建正则对象
int pos = re.indexIn(str);
QString a, b;
if(pos > -1)
{
	a = re.cap(1);
	b = re.cap(2);
	qDebug() << a << b; //a == "wcx", b == 39
}

Python使用正则表达式

  • 正则表达式表示类型:raw string类型(原生字符串类型)

Re库使用

相关函数调用

  • re.search(pattern, string, flags=0)
    在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象

  • re.match(pattern, string, flags=0)
    从一个字符串的开始位置起匹配正则表达式,返回match对象

  • re.findall(pattern, string, flags=0)
    搜索字符串,以 列表类型 返回全部能匹配的子串

  • re.split(pattern, string, maxsplit=0, flags=0)
    将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
    参数:maxsplit为最大分割数,剩余部分作为最后一个元素输出

  • re.finditer(pattern, string, flags=0)
    搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

  • re.sub(pattern, repl, string, count=0, flags=0)
    在一个字符串中替换所有匹配正则表达式的字串,返回替换后的字符串
    参数:repl为替换匹配字符串的字符串, count为匹配的最大替换次数


  • 相关参数
    pattern:正则表达式的字符串或原生字符串表示
    string:待匹配字符串
    flags:正则表达式使用时的控制标记
    – re.I (re.IGNORECASE):忽略正则表达式的大小写
    – re.M (re.MULTILINE):使^操作符将给定字符串的每行作为匹配开始
    – re.S (re.DOTALL):使.操作符能匹配包括换行符在内的所有字符

  • 注:re库默认采用贪婪匹配,即输出匹配最长的子串;在正则表达式中加 ‘?’ 可获得最短子串


面向对象方式调用

regex = re.compile(pattern, flags=0)
将正则表达式的字符串形式编译成正则表达式对象,再利用对象调用上述函数

match对象

  • 属性
    属性
  • 方法
    方法
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值