1. 首页 > 科技

PHP非贪婪匹配,出现重复输出怎么办?(PHP的正则非贪婪匹配)

PHP非贪婪匹配,出现重复输出怎么办?(PHP的正则非贪婪匹配)

PHP的正则非贪婪匹配

/正则/U 参数U,用书上的原话是,不再贪婪

php正则匹配出数字重复出现的次数

如果要用正则匹配重复出现的数字还行,但要匹配出现的次数那就不行了,不过你可以用PHP自带的substr_count()函数处理,方法也很简单,比正则更容易。使用方法如下:

<?php

$text = 'This is a test';

echo strlen($text); // 14

echo substr_count($text, 'is'); // 2

// 字符串被简化为 's is a test',因此输出 1

echo substr_count($text, 'is', 3);

// 字符串被简化为 's i',所以输出 0

echo substr_count($text, 'is', 3, 3);

// 因为 5+10 > 14,所以生成警告

echo substr_count($text, 'is', 5, 10);

// 输出 1,因为该函数不计算重叠字符串

$text2 = 'gcdgcdgcd';

echo substr_count($text2, 'gcdgcd');

?>

php 正则表达式 非贪婪匹配

要知道,正则表达式是从字符串的头开始检查匹配的

所以/.+?<\/span>/表达式会匹配上1122的整串

具体是这样匹配的

11

class='a'> 匹配了 "class='a'>"

.+? 匹配了 22

<\/span> 匹配了

php过虑html标签的正则表达式preg_replace("/<.+?>/t","",$str);

?是非贪婪匹配的标志,这么说吧

这里的<.+?>由于.是匹配非回车换行的所有字符,需要用?来限制成非贪婪的匹配,可以保证匹配到合适的就不再往后走了,也就是找到第一个>后就不再继续了。

但如果不限制写成<.+>,就是贪婪匹配,一组匹配能匹配多远匹配多远,比如hahaee的时候就要一直往后找>,直到匹配到haha,而这个肯定是你不想要的。

//-----

\t是制表符。但/<.+?>/t结尾那个不知道啥意思,楼下补充