正则表达式中的.*?

2020-09-19 16:29:00
六月
来源:
https://zhidao.baidu.com/question/561636351.html
转贴 643

正则表达式符号使用小总结:

1、[ ]:方括号。匹配需要的字符集合,如[1-3]或[123]都是匹配1、2或者3。

2、^:脱字符号。方括号中加入脱字符号,就是匹配未列出的所有其他字符,如[^a]匹配除a以外的所有其他字符。

3、:反斜杠。和python字符串使用规则一样,可以匹配特殊字符本身,如\d表示匹配0到9的任意一个数字字符,而\d则表示匹配d本身。

4、*:星号。匹配前一个字符0到n次,如pytho*n可以匹配pythn、pytoon、pythooooon等。还有其它匹配重复字符的如?、+或{m,n},其中{n,m}可以灵活使用,它表示匹配n次到m次。

5、?:问号。匹配前一个字符0次或1次。非贪婪模式

6、+:加号。匹配前一个字符1次或多次。

7、. :点号。匹配除换行符 \n 之外的任何单字符。


表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件zhi的情况只匹配一次,即最小匹配。

* 匹配0或多个正好在它之前的那个字符。例如正则表达式。*意味着能够匹配任意数量的任何字符。 ? 匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。.*是指任何字符0个或多个,.?是指任何字符0个或1个.

.*具有贪婪的性质,首先匹配到不能匹配为止,根据后面的正则表达式,会进行回溯。.*?则相反,一个匹配以后,就往下进行,所以不会进行回溯,具有最小匹配的性质。

?表示非贪婪模式,即为匹配最近字符 如果不加?就是贪婪模式a.*bc 可以匹配  abcbcbc

参考: https://zhidao.baidu.com/question/561636351.html

https://zhidao.baidu.com/question/297472922.html

https://blog.csdn.net/qq_37699336/article/details/84981687

发表评论
评论通过审核后显示。