java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用

91b300f1b17357348cb69332be9823e2.png

1. 为什么谈有限自动机时要谈正则表达式?原因是:正则表达式所匹配的所有字符串所构成的语言可以用有限自动机识别。根本原因是:正则集(正则表达式所匹配的所有字符串集合)是由右线性文法(3型文法)所产生的语言,两者是等同的。

2. 单词拼写检查

有限自动机除了可以匹配正则表达式描述的字符集(语言),也可以用来做单词拼写检查。当然还是要基于字符变化距离度量来提供候选串的。具体操作就是:

设T为字母表,可构造一个识别字母表T上的字母构成的所有合法单词的有限自动机。该自动机对应的状态转换图可看作是一个边上有字母标记的有向图。那么,字母表T上的字母构成的所有合法单词都对应着有限自动机中的一条从初始状态到终止状态的路径。字符串识别的过程就是对有向图从初始状态到终止状态遍历的过程,一条路径从初始状态到终止状态经过的所有弧上的字母连接起来构成一个字符串。给定一个字符串,对其进行拼写检查的过程实际上是在给定阈值t(t>0)的范围内,寻找那些与输入串的编辑距离小于t的路径,这些路径从初始状态到终止状态经过的所有弧上的字母连接起来构成的字符串,就是要找的与输入串最相似的单词。

自动机的实现,按照何晗的文章

https://www.hankcs.com/nlp/%E7%AC%AC3%E7%AB%A0-%E5%BD%A2%E5%BC%8F%E8%AF%AD%E8%A8%80%E4%B8%8E%E8%87%AA%E5%8A%A8%E6%9C%BA.html​www.hankcs.com

所述,关于有限自动机找出正确字串,修改图的深度优先搜索算法即可,弄个stack,注意剪枝就行。

编辑距离指的是Damerau所定义的编辑距离,即两个字符串之间的编辑距离等于使一个字符串变成另一个字符串而进行的插入、删除、替换或相邻字符交换位置而进行操作的最少次数。编辑距离可以参考何晗搜集整理的

https://www.hankcs.com/program/java/several-string-edit-distance-achieved.html​www.hankcs.com

我之前找到过一个Python版本的,但是那时候没有写知乎,又不知道哪去了。什么语言不重要,知道实现过程比较重要,怎么优化不重要,因为没见过会优化的。

基于有限自动机的单词拼写检查完整实现,没有找到合适的代码,有关拼写检查的仓库有:

  • https://github.com/hunspell/hunspell star最多的一个拼写检查
  • https://github.com/jmoy/norvig-spell norvig拼写检查的各种编程语言实现
  • https://github.com/barrust/pyspellchecker norvig拼写检查的纯Python实现
  • https://github.com/bakwc/JamSpell

有关于拼写检查这个事,有时间再写其他文章说。写形式语言自动机主要就是为了补上2型上下文无关文法以及对应的下推自动机。

3.grep命令

虽然说操作机器是最没脑子的技术,但是还是把它弄熟,然后再狠狠地鄙视,跟导数据一样,一个月开200块钱都多,就是个女工接线头。

$ cat kkk
akkk
test file
oooo
ppppp# 在文件kkk中搜索匹配字符串"test file"
$ grep "test file" kkk
test file# 在文件kkk中搜索匹配字符串"es",并且加上行号输出
$ grep -n es kkk
2:test file# 显示所有以d开头的文件中包含"test"的行数据内容
$ cat d1
1
test1
$ cat d2
2
test2
$ grep 'test' d*
d1:test1
d2:test2# 在文件aa中显示所有包含至少有5个连续小写字符的行数据内容
$ cat aa
aaaaa
bbb
AAAAA
BBB
aaaaaa
$ grep -E "[a-z]{5}" aa
aaaaa
aaaaaa# 查找sshd进行信息
# ps -ef|grep sshd
root      3390  3376  0 09:09 pts/2    00:00:00 grep --color=auto sshd# 在aa文件中找出以b开头的行内容
$ grep "^b" aa
bbb# 在kkk文件中输出以le结尾的行内容
$ grep -E "le$" kkk
test file# 在kkk文件中输出包含es或 kk的行内容
$ grep -E "(es)|(kk)" kkk 
akkk
test file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14.6 Spring MVC 测试框架(翻译)

14.6 Spring MVC 测试框架(每天翻译一点点) Spring MVC测试框架对 Spring MVC 代码提供一流的测试支持 ,它拥有一个 fluent API ,可以和JUnit, TestNG 或其它任何测试框架协同使用。 此测试框架基于 spring-test 模块的Servlet API mock obje…

html读取本地txt_手机本地电子书籍阅读器 — 静读天下

在早期山寨按键手机流行的年代手机中必装两款软件莫过于Anyview和Opera浏览器了,一个是本地最佳阅读工具另一个是压缩流量访问网页的利器,时过境迁好多人都早以忘记了这些昔日的王者。曾经那帮挑灯夜读看小说的熊孩子都已经长大了,在难得的休…

华为手机丢失定位网站_手机端网站优化要从网站的设计和定位开始入手

移动端网站优化要从网站的设计和定位开始入手,重要的是简洁易用,切忌复杂,令用户搞不明白找不到想用的。对于搜索引擎而言,好的用户访问体验也是排名的最佳标准。下面小编就来分析一下设计对手机端网站优化排名的影响。1、使用规范…

安卓接受后台数据转换解析出错_安卓手机内存越大,速度就会越快?

与非网 2 月 18 日讯,现在安卓手机的内存在产品规划上越来越大,2020 年发布的旗舰手机运行内存已经拓展到惊人的 10GB 以上,而这个运存大小已经超过笔记本主流的 8GB 内存,手机到底需要这么大的内存吗?安卓手机的内存为…

ipv6地址格式_IPV6与IPV4的差异

ipv6相比,我们现在的IPV4,有什么优势,有什么差异IPv6的路由表更小,IPv6的组播支持以及对流的支持增强,IPv6加入了对自动配置的支持,IPv6具有更高的安全性. 与IPV4相比,IPV6具有以下几个优势:IPv6具有更大的地址空间。IPv4中规定IP…

反序列化对象列表发生异常_通过反序列化漏洞,黑客能做什么呢?

在之前的文章中讲解了一个反序列化的例子,我们已经知道,通过反序列化漏洞,黑客可以调用到Runtime.exec()来进行命令执行。换一句话说,黑客已经能够在服务器上执行任意的命令,这就相当于间接掌控了你的服务器&#xff0…

tcl之内容

转载于:https://www.cnblogs.com/chip/p/5847126.html

js密码强度正则表达式_知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的…

腾讯视频客户端导出MP4格式

腾讯视频下载下来之后是.qlv格式,这种格式只能使用客户端播放。感觉挺蛋疼的,Mp4好不容易让各种设备都可以统一播放视频了,这样一搞感觉又倒退了几十年,关键的是,有些资源是腾讯独家的,不装客户端就看不了&…

labview项目实例_labview操作者框架

0.引言操作者框架适合于多并行任务的项目。在这样的项目中,多个并行任务之间往往需要相互通信,传统的解决办法是,每个任务一个队列,一个while循环,多任务项目需要在一个程序框图使用多个while,不好看。NI说…

eclipse发布web不带项目名的url

默认发布后访问地址是&#xff1a; http://localhost:8080/huanle/ 要达到的效果是&#xff1a; http://localhost:8080/ 不带项目名的url的好处是&#xff0c;不用再在每个地址前加<% path%>了&#xff1a; &#xff08;很烦有木有&#xff09; 操作方法&#x…

php 随机在文章中添加锚文本_页面SEO优化的锚文本优化概念

SEO优化分为结构优化和页面优化&#xff0c;页面的SEO优化中其中一个重点是锚文本的建设。锚文本的概念就是网站的内部链接&#xff0c;较为常见的就是将文章中的关键词作为锚文本。但在具体建设当中&#xff0c;很多网站对锚文本的处理出现了很多错误。这是因为对锚文本的优化…

eclipse发布web显示异常,清除缓存也无效?

发布的项目突然之间显示就不正常了&#xff0c;清除了n遍缓存&#xff0c;tomcat目录&#xff0c;一点效果都没有&#xff0c;这时候&#xff0c;应该用Dreamweaver检查下页面代码&#xff0c;很可能是你不小心删了点什么。 下面是一个血的教训&#xff0c;浪费了一上午时间&a…

关于NPN和PNP传感器的应用区别(转载)

http://blog.csdn.net/greatwgb/article/details/9120735 PNP与NPN型传感器其实就是利用三极管的饱和和截止&#xff0c;输出两种状态&#xff0c;属于开关型传感器。但输出信号是截然相反的&#xff0c;即高电平和低电平。PNP输出是高电平1&#xff0c;NPN输出的是低电平0。 …

spring security:第一个程序

spring security虽然已经简化了&#xff0c;但配置还是要小心翼翼的。这里运行起第一个spring security程序。 环境&#xff1a; spring 4.2.4spring security 4.0.4 &#xff08;GA&#xff09; 搭建步骤&#xff1a; pom.xml 加入web和config模块&#xff0c;config模块是…

文献引用的标准格式_外语论文文献引用格式—APA Style

APA Style写外语论文时&#xff0c;非常注意引用格式的使用。APA作为常见的论文引用格式之一&#xff0c;常被用于心理学、教育学和社会学科领域。可是你知道APA格式要如何使用&#xff1f;APA格式有哪些要求&#xff1f;下面小编为大家整理一下~什么是APA格式&#xff1f;APA格…

pandas 提取某几列_【科学计算工具二】初识Pandas

和Numpy最大的不同&#xff0c;Pandas的数据有对应的index。一、Series数组Series 是带有标签的一维数组&#xff0c;可以保存任何数据类型&#xff08;整数&#xff0c;字符串&#xff0c;浮点数&#xff0c;Python对象等&#xff09;&#xff0c;轴标签统称为索引创建Series数…

开发物体识别桌、_科研人员开发突破性的技术,允许盲人识别形状和物体

一项令人难以置信的新技术正在让失明人士有能力识别形状和物体&#xff0c;而这些形状和物体都是在他们的大脑上“画出来”的。一篇描述该技术的研究论文刚刚发表在《细胞》杂志上&#xff0c;正如ScienceNews报道的那样&#xff0c;这可能是向盲人提供一种视觉上与周围世界互动…

spring webflow getting start

概述 很多时候&#xff0c;我们写的流程都嵌在一大堆代码中&#xff0c;没有办法直观的管理。而spring webflow可以将流程抽出来&#xff0c;放到一个单独的xml文件中&#xff0c;这样流程就不会埋没在代码里了。 今天要做一个很简单的流程&#xff1a; 商品发布流程 Created…

windows 修改nginx端口号_分享Nginx搭建图片服务器简单实现

第一步&#xff1a;安装vsftpd提供ftp服务https://www.cnblogs.com/lyq159/p/12070791.html第二步&#xff1a;安装Nginx提供http服务1.安装准备&#xff1a;安装Nginx环境a) gcc      安装nginx需要先将官网下载的源码进行编译&#xff0c;编译依赖gcc环境&#xff0c;如…