广义的模式匹配:

https://en.wikipedia.org/wiki/Pattern_matching

字符串模式匹配:

https://en.wikipedia.org/wiki/String_searching_algorithm

  单模式匹配算法:

    BF / KMC 算法

    https://zhuanlan.zhihu.com/p/24649304

  使用自动机(NFA、DFA)的模式匹配算法:

  TRIE树

  最著名的AC

    https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm

  号称比AC还快的WM

    https://en.wikipedia.org/wiki/Bitap_algorithm

正则表达式:

  https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

常用实现:

  posix兼容,perl兼容。

常用库:

  PCRE

NLP入门之形式语言与自动机学习:

https://zhuanlan.zhihu.com/p/28678040

https://zhuanlan.zhihu.com/p/28754354

https://zhuanlan.zhihu.com/p/28856459

一本教材: 《形式语言与自动机理论》

https://book.douban.com/subject/2179488/

其他:

https://zhuanlan.zhihu.com/p/30009083

https://zhuanlan.zhihu.com/p/20693609

https://book.douban.com/subject/2038862/

http://blog.jqian.net/post/ac-automation.html

http://www.cnblogs.com/zzqcn/p/3525636.html

AC算法原始论文->AC算法的简单代码->AC算法的优化改进->正则表达式如何构造成NFA(Thompson/Glushkov)->hyperscan原理

这个写的挺好的:

https://blog.csdn.net/21aspnet/article/details/8172359

我的思考

光从模式匹配这个问题本身,我在想subject和pattern是不是可以对等调换的呢?

即编译了一堆subject然后去匹配一堆pattern,和编译了一堆pattern然后去匹配一堆subject?

这个问题的答案是:是的。分别叫NFA,DFA。两个状态机。

[模式匹配] AC 自动机 模式匹配的更多相关文章

  1. [knowledge][模式匹配] 字符匹配/模式匹配 正则表达式 自动机

    字符串 T = abcabaabcabac,字符串 P = abaa,判断P是否是T的子串,就是字符串匹配问题了,T 叫做文本(Text) ,P 叫做模式(Pattern),所以正确描述是,找出所有在 ...

  2. AC自动机-算法详解

    What's Aho-Corasick automaton? 一种多模式串匹配算法,该算法在1975年产生于贝尔实验室,是著名的多模式匹配算法之一. 简单的说,KMP用来在一篇文章中匹配一个模式串:但 ...

  3. AC自动机

    AC自动机,全称Aho-Corasick自动机.如果没记错的话好像就是前缀自动机. 其实AC自动机就是KMP上树的产物.理解了KMP,那AC自动机应该也是很好理解的. 与KMP类似,AC自动机也是扔一 ...

  4. CodeForces 710F 强制在线AC自动机

    题目链接:http://codeforces.com/contest/710/problem/F 题意:维护一个集合,集合要求满足三种操作. 1 str:向集合插入字符串str(保证不会插入之前已经插 ...

  5. AC自动机入门

    Aho-Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模式匹配算法之一. KMP算法很好的解决了单模式匹配问题,如果有了字典树的基础,我们可以完美的结合二者解决多 ...

  6. AC自动机---Keywords Search

    题目网址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110773#problem/A Description In the moder ...

  7. AC自动机基础知识讲解

    AC自动机 转载自:小白 还可参考:飘过的小牛 1.KMP算法: a. 传统字符串的匹配和KMP: 对于字符串S = ”abcabcabdabba”,T = ”abcabd”,如果用T去匹配S下划线部 ...

  8. AC自动机(转)

    http://www.cppblog.com/mythit/archive/2009/04/21/80633.html 首先简要介绍一下AC自动机:Aho-Corasick automation,该算 ...

  9. POJ1204 Word Puzzles(AC自动机)

    给一个L*C字符矩阵和W个字符串,问那些字符串出现在矩阵的位置,横竖斜八个向. 就是个多模式匹配的问题,直接AC自动机搞了,枚举字符矩阵八个方向的所有字符串构成主串,然后在W个模式串构造的AC自动机上 ...

随机推荐

  1. tensorflow笔记9:nn_ops.bias_add 函数

    完整代码引入:from tensorflow.python.ops import nn_ops tensorflow version:1.9 代码演示: import os import tensor ...

  2. Unity和Android混合开发

    通用的流程 https://blog.csdn.net/zhangdi2017/article/details/65629589 应用场景 Unity游戏中一些功能需要安卓系统的支持,如搜索wifi等 ...

  3. java-信息安全(十七)-*.PFX(*.p12)&个人信息交换文件

    原文地址 http://snowolf.iteye.com/blog/735294 与计费系统打交道,少不了用到加密/解密实现.为了安全起见,通过非对称加密交换对称加密密钥更是不可或缺.那么需要通过什 ...

  4. Java8学习笔记(七)--Collectors

    本系列文章翻译自@shekhargulati的java8-the-missing-tutorial 你已经学习了Stream API能够让你以声明式的方式帮助你处理集合.我们看到collect是一个将 ...

  5. 仿迅雷播放器教程 -- C++ 100款开源界面库 (10)

      (声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系 ...

  6. SpringBoot(十六)-- 使用外部容器运行springBoot项目

    spring-boot项目需要部署在外部容器中的时候,spring-boot导出的war包无法再外部容器(tomcat)中运行或运行报错. 为了解决这个问题,需要移除springBoot自带的tomc ...

  7. Flask框架(1)-程序基本结构

    1. 安装Flask 1.1 安装虚拟环境 mkdir myproject cd myproject py -3 -m venv venv #Linux系统: python3 -m venv venv ...

  8. iOS(WKWebView)OC与JS交互 之三

      随着H5功能愈发的强大,没进行过混合开发的小伙们都不好意思说自己能够独立进行iOS的app开发,在iOS7操作系统下,常用的native,js交互框架有easy-js,WebViewJavascr ...

  9. echarts - 使用echarts过程中遇到的问题(pending...)

    1. 配合tab切换时,被display:none的元素init设置echarts失败 2018-11-09  18:09:35 现象描述:有一个tabs选项卡,每个切换项A.B中都有使用echart ...

  10. mysql格式化小数保留小数点后两位(小数点格式化)

    格式化浮点数的问题,用format(col,2)保留两位小数点,出现一个问题,例如下面的语句,后面我们给出解决方法 SELECT FORMAT(12562.6655,2); 结果:12,562.67 ...