正则表达式笔记

正则表达式

语法

  • 普通字符

    包括所有大写字母, 小写字母,所有数字,所有标点符号和一些其他符号

    [ABC]: 匹配[…]中出现的所有字符(A,B,C)
    例: [ABC] 能匹配到 ABCDEFG中的A,B,C

    [^ABC]: 匹配除了[^…]中出现过字符
    例: [^ABC]能匹配到ABCDEFG中的D,E,F,G

    [A-Z]: 匹配所有大写字母;[a-z]:匹配所有小写字母

    [\s] : 匹配所有空白符, 包括换行; [\S]: 匹配所有非空白符,不包括换行

    [\w] : 匹配字母,数字或下划线([A-Za-z0-9]

[\b]: 匹配一个单词边界, 即末字与空格之间位置;[\B]: 非单词边界

\bCha匹配Cha开头的单词, \Bter匹配ter结尾的单词

[\t]: 匹配一个制表符

  • 特殊字符

    如果需要匹配,特殊字符, 需要在字符前加\进行转义

    \: 将下一个字符标记为或特殊字符

    *: 匹配前面的子表达式0次, 1次或多次

    +: 匹配前面的子表达式1次或多次

    ?: 匹配前面的子表达式0次或1次

    .: 匹配除了(\n, \r)以外任意单个字符

    []: 标记一个中括号表达式的开始和结束位置

    (): 标记一个子表达式开始和结束的位置,子表达式可以获取供后续使用

    ^: 匹配字符串的开始位置, 如果^在[]中括号表达式内, 表示不包含其字符的内容

    $: 匹配字符串结尾

    {}: 标记限定表达式的开始和结束位置

    |: 指明两项之间的一个选择

  • 限定符

    限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配

    {n}: 匹配前面表达式出现确定的n次

    ^[0-9]{3} 表示由三个数字开头的字符串

    {n,}: 匹配前面表达式出现至少n次(出现次数>=n)

    {n,m}: 匹配前面表达式出现n-m次

  • 贪婪匹配
    * 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。

    <h1>正则表达式</h1> 通过<.*>匹配, 以贪婪匹配 , 则匹配到<h1>正则表达式</h1>;通过</*?>非贪婪匹配,则匹配到<h1>

  • 查找

    ?=: exp1(?=exp2) 查找exp2前面的exp1

    ?<=: (?<=exp2)exp1 查找exp2后面的exp1

    ?!: exp1(?!exp2) 查找后面不是exp2的exp1

    ?<!: (?<!exp2)exp1 查找前面不是exp2的exp1

修饰符

记于表达式之后 /pattern/flag flag即为修饰符

i: 忽略大小写

g: 全局匹配

m: 多行匹配

s: 使得特殊字符.包含换行符\n

非获取匹配

(?:pattern)

​ 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 ‘industry|industries’ 更简略的表达式

(?=pattern)

​ 正向肯定预查(look ahead positive assert),在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,"Windows(?=95|98|NT|2000)“能匹配"Windows2000"中的**“Windows”**,但不能匹配"Windows3.1"中的"Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?!pattern)

​ 正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?!95|98|NT|2000)“能匹配"Windows3.1"中的"Windows”,但不能匹配"Windows2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?<=pattern)

​ 反向(look behind)肯定预查,与正向肯定预查类似,只是方向相反。例如,"(?<=95|98|NT|2000)Windows“能匹配”2000Windows“中的”Windows",但不能匹配"3.1Windows“中的”Windows

(?<!pattern)

反向否定预查,与正向否定预查类似,只是方向相反。例如"(?"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python正则表达式的判断可以使用re模块。该模块提供了一系列函数来操作正则表达式。常用的函数有match()、search()和findall()等。match()函数用于判断一个字符串是否与正则表达式匹配,search()函数用于在字符串中搜索匹配正则表达式的内容,findall()函数用于在字符串中查找所有匹配正则表达式的内容。 另外,正则表达式中还有一些特殊字符和转义字符,比如^、$、*、+、?、.等,它们在正则表达式中有特殊的含义。例如^表示字符串的开始,$表示字符串的结束,*表示匹配0个或多个前面的字符。要注意,正则表达式中的特殊字符需要使用转义字符\来进行转义,例如\*表示匹配字面上的*。 总结来说,Python正则表达式的判断可以使用re模块的函数,同时需要注意正则表达式中的特殊字符和转义字符的使用。编写正则表达式时,需要仔细理解正则表达式的语法规则,并注意不同规则之间的细微差别。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python 正则式学习笔记](https://blog.csdn.net/whycadi/article/details/2011046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值