背景描述:现有一个json字符串:{{"name":"frank"},{"age":22},{"sex":"man"}}需要匹配出{"name":"frank"}、{"age":22}格式的内容;当我的正则表达式为:\{".*\}匹配出的内容如下:{"name":"frank"},{"age":22},{"sex":"man"},{"age2":22}}我对正则略做修改为:\{".*?\}则可以匹配出正确的内容;疑问:.* 能否理解为匹配除了换行符以外的任意字符并且不限字符数量?当.*后面紧跟一个?时要怎么理解?能不能理解为.*重复0次或1次?如果1、3没有错误的话,*本身就代表了不限次数,.*可以一直匹配到字符串换行,跟上?以后的匹配规则是什么呢?
2 回答
三国纷争
TA贡献1804条经验 获得超7个赞
.*
除换行符之外的任意单字符.*
后跟?
为非贪婪模式匹配贪婪模式:正则的默认模式,即:满足条件直到结束。如字符:1111,如正则贪婪匹配1,则结果是1111
非贪婪模式:满足条件(首次)即结束。如字符:1111,如正则非贪婪匹配1,则结果是1
.*
为匹配0次或1次或多次;.+
为匹配一次或多次;.?
为匹配0次或1次请理解
.*?
和.?
的区别,区别请结合第2、3点
添加回答
举报
0/150
提交
取消