python 正则 .+?与.*?的区别 (正则表达式)

. 匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。

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

  • 匹配前面的子表达式人任意次
  • 匹配前面的子表达式一次或多次>=1)
    ? 匹配前面的子表达式0到1次
    加问号则表示为懒惰模式
    .+? 表示匹配任意字符一个或则多个
    .*? 表示匹配任意字符0个或多个
    在具体使用时.+?可能跟好用些,看个人喜好

既然写了,顺带将正则的知识补全吧;;

“\b” :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 “is” 正则就要写成 “\bis\b”

\b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界

“\d”: 匹配数字,
 
“\w”:匹配字母,数字,下划线.

“\s”:匹配空格

“.”:匹配除了换行符(\r\n)以外的任何字符

这个算是"\w"的加强版了"\w"不能匹配 空格 如果把字符串加上空格用"\w"就受限了,
   用 “.“是如何匹配字符"a23 4 5 B C D__TTz” 正则:”.+"
  
“[abc]”: 字符组 匹配包含括号内元素的字符

1 "\b" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 "is" 正则就要写成 "\bis\b"  

    \b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界 

 "\d": 匹配数字,
 
 "\w":匹配字母,数字,下划线.

 "\s":匹配空格 

  
  ".":匹配除了换行符(\r\n)以外的任何字符

    这个算是"\w"的加强版了"\w"不能匹配 空格 如果把字符串加上空格用"\w"就受限了,
    用 "."是如何匹配字符"a23 4 5 B C D__TTz"  正则:".+"
  
 "[abc]": 字符组  匹配包含括号内元素的字符 

匹配能力 ( . > \w > \d )

反义:
写法很简单改成大写就行了,这也很好理解;

“\W” 匹配任意不是字母,数字,下划线 的字符

“\S” 匹配任意不是空白符的字符

“\D” 匹配任意非数字的字符

“\B” 匹配不是单词开头或结束的位置

“[^abc]” 匹配除了abc以外的任意字符
“{n}” 重复n次

   "\W"   匹配任意不是字母,数字,下划线 的字符

   "\S"   匹配任意不是空白符的字符

 "\D"  匹配任意非数字的字符

   "\B"  匹配不是单词开头或结束的位置

   "[^abc]"  匹配除了abc以外的任意字符
"{n}"  重复n次


例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则: “a{3}” 结果就是取到3个a字符 “aaa”;

“{n,m}” 重复n到m次

例如正则 “a{3,4}” 将a重复匹配3次或者4次 所以供匹配的字符可以是三个"aaa"也可以是四个"aaaa" 正则都可以匹配到

“{n,}” 重复n次或更多次

 "{n,}"  重复n次或更多次

与{n,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至少要重复3次
   “??” 重复0次或1次,但尽可能少重复

如 “aaacb” 正则 “a.??b” 只会取到最后的三个字符"acb"

“{n,m}?” 重复n到m次,但尽可能少重复

  如 "aaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空
1"aaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

“{n,}?” 重复n次以上,但尽可能少重复

  如 "aaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"
"aaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"

|n+|匹配n至少一次(>=1) ||
|-n?-|-匹配n 0次 或一次 (有与无)-|
| n* | |匹配n 随意次(*可代表任意字母)
|?=n| 匹配任何其后紧接指定字符串 n 的字符串|
|-?!n-|匹配任何其后没有紧接指定字符串 n 的字符串。

本文转自 https://blog.csdn.net/zhxt__/article/details/88582997

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值