详情

首页手游攻略 正则表达式中.+?与.*?的区别实用指南

正则表达式中.+?与.*?的区别实用指南

佚名 2026-09-05 08:50:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“正则表达式中.+?与.*?的区别”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

结合项目来看,. 匹配除“rn”之外的任何单个字符。要匹配包括“rn”在内的任何字符,请采用像“[sS]”的模式。

匹配前面的子表达式0到1次
*匹配前面的子表达式人任意次
+匹配前面的子表达式一次或多次>=1)
匹配前面的子表达式0到1次

加问号则表示为懒惰模式

  • .+? 表示匹配任意字符一个或则多个
  • .*? 表示匹配任意字符0个或多个

在具体采用时.+?可能跟好用些,看个人喜好

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

在这里插入图片描述

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

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

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

 "s":匹配空格

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

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

匹配能力 ( . > w > d )

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

   "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,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至少要重复3次

   "??"  重复0次或1次,但尽可能少重复

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

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

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

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

如 "aaaaa" 正则 "a{1,}" 最少是1次所以取到结果为 "a"
n+匹配n至少一次(>=1)
n?匹配n 0次 或一次 (有与无)
n*匹配n 随意次(*可代表任意字母)
?=n匹配任何其后紧接指定字符串 n 的字符串
?!n匹配任何其后没有紧接指定字符串 n 的字符串。

==>两者相互等价

n?n{0,1}
n+n{1,}
n*n{0,}

到此这篇关于正则表达式中.+?与.*?的区别的文章就介绍到这了,更多相关正则表达式 .+?与.*?内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!

您可能感兴趣的文章:
  • 正则表达式(?=)正向先行断言实战案例
  • 正则表达式中问号(?)的正确用法详解
  • 正则表达式中的 .*? 或 .*+ 的意思
  • 解析正则表达式中的.*,.*?,.+?的含义
  • 还不会正则表达式?赶快看这篇!
  • 正则表达式惰性匹配模式(?)
  • 一个正则表达式的看法(?:)
  • 正则表达式中(?s)与(?m)的区别解析
点击查看更多
推荐专题
热门阅读