沃梦达 / 编程问答 / php问题 / 正文

正则表达式加与星号的区别?

Regex plus vs star difference?(正则表达式加与星号的区别?)

本文介绍了正则表达式加与星号的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

What is the difference between:

(.+?)

and

(.*?)

when I use it in my php preg_match regex?

解决方案

They are called quantifiers.

* 0 or more of the preceding expression

+ 1 or more of the preceding expression

Per default a quantifier is greedy, that means it matches as many characters as possible.

The ? after a quantifier changes the behaviour to make this quantifier "ungreedy", means it will match as little as possible.

Example greedy/ungreedy

For example on the string "abab"

a.*b will match "abab" (preg_match_all will return one match, the "abab")

while a.*?b will match only the starting "ab" (preg_match_all will return two matches, "ab")

You can test your regexes online e.g. on Regexr, see the greedy example here

这篇关于正则表达式加与星号的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:正则表达式加与星号的区别?

基础教程推荐