美文网首页
PHP-字符串模式匹配

PHP-字符串模式匹配

作者: 简单方式 | 来源:发表于2020-05-13 11:39 被阅读0次
PHP

(1)字符串模式匹配

代码

function isStr($str1, $str2)
{
    $str2_len = strlen($str2);
    $str1_len = strlen($str1);
    $isExist  = false;
    $num      = 0;

    for ($i = 0; $i < $str2_len; $i = (($p != 0) ? $p : $i + 1)) {
        $isExist = true;
        $offset  = $i;
        $p       = 0;

        //debug
        $num++;
        echo "第{$num}次=>offset->({$i})<br/>";

        for ($j = 0; $j < $str1_len; $j++) {
            if ($str1{$j} != $str2{$offset++}) {
                $isExist = false;
                break;
            }

            if ($p == 0 && $j > 0 && $str1{0} == $str2{$offset - 1}) {
                $p = $offset - 1;
            }
        }

        if ($isExist) {
            break;
        }
    }

    return $isExist;
}

测试

$str1 = 'ABCDABD';
$str2 = 'BBCABCDABABCDABCDABDE';
var_dump(isStr($str1, $str2));

结果

第1次匹配=>offset->(0)
第2次匹配=>offset->(1)
第3次匹配=>offset->(2)
第4次匹配=>offset->(3)
第5次匹配=>offset->(7)
第6次匹配=>offset->(8)
第7次匹配=>offset->(9)
第8次匹配=>offset->(13)
bool(true)

结束

可以看到打印的结果并没有每次回溯都是向后匹配偏移+1,而是每次偏移的位置会随着上次匹配的记录并标识出当前跳转的offset 而改变,这样省略了很多无用的比较,直到最后匹配成功或者失败。

相关文章

  • PHP-字符串模式匹配

    (1)字符串模式匹配 代码 测试 结果 结束 可以看到打印的结果并没有每次回溯都是向后匹配偏移+1,而是每次偏移的...

  • 模式匹配

    模式匹配之字符串 模式匹配之匹配类型 模式匹配之匹配数组、元组、集合 模式匹配之样例类 模式匹配之偏函数

  • Python算法-字符串(String)

    字符串匹配问题字符串匹配(String Matching):又称为模式匹配(Pattern Matching)。可...

  • 一些有关算法的

    字符串模式匹配算法 字符串的KMP算法详解部分匹配表(即)向右移一位就可以得到next数组。字符串模式匹配算法 R...

  • 字符串匹配

    字符串匹配(string matching)也称字符串查找(string searching)或模式匹配(patt...

  • Python 正则表达式

    正则表达式模式 模式描述^匹配字符串的开头$匹配字符串的末尾。.匹配任意字符,除了换行符,当re.DOTALL标记...

  • AC自动机实现屏蔽单词

    多模式自动匹配AC自动机 KMP是多模式匹配算法, 解决的是一个字符串匹配多个模式串的问题, 该字符串往往短于或者...

  • R学习笔记(7):使用stringr处理字符串(2)

    目标:结合正则表达式,实现 确定与某种模式匹配的字符串找出匹配位置提取匹配内容替换匹配内容基于匹配拆分字符串 1....

  • Python的正则表达式

    模式介绍 基本用法 ^: 匹配字符串的开头,如:^很 $: 匹配字符串的末尾,如:蓝$ .: 匹配除了换行符外的任...

  • 四.Shiro - 拦截器配置

    例子 一 . url 匹配模式 支持Ant风格模式 ? : 匹配一个字符 * : 匹配零个或多个字符串 ** : ...

网友评论

      本文标题:PHP-字符串模式匹配

      本文链接:https://www.haomeiwen.com/subject/pqoznhtx.html