日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 為什么談?dòng)邢拮詣?dòng)機(jī)時(shí)要談?wù)齽t表達(dá)式?原因是:正則表達(dá)式所匹配的所有字符串所構(gòu)成的語(yǔ)言可以用有限自動(dòng)機(jī)識(shí)別。根本原因是:正則集(正則表達(dá)式所匹配的所有字符串集合)是由右線性文法(3型文法)所產(chǎn)生的語(yǔ)言,兩者是等同的。

2. 單詞拼寫(xiě)檢查

有限自動(dòng)機(jī)除了可以匹配正則表達(dá)式描述的字符集(語(yǔ)言),也可以用來(lái)做單詞拼寫(xiě)檢查。當(dāng)然還是要基于字符變化距離度量來(lái)提供候選串的。具體操作就是:

設(shè)T為字母表,可構(gòu)造一個(gè)識(shí)別字母表T上的字母構(gòu)成的所有合法單詞的有限自動(dòng)機(jī)。該自動(dòng)機(jī)對(duì)應(yīng)的狀態(tài)轉(zhuǎn)換圖可看作是一個(gè)邊上有字母標(biāo)記的有向圖。那么,字母表T上的字母構(gòu)成的所有合法單詞都對(duì)應(yīng)著有限自動(dòng)機(jī)中的一條從初始狀態(tài)到終止?fàn)顟B(tài)的路徑。字符串識(shí)別的過(guò)程就是對(duì)有向圖從初始狀態(tài)到終止?fàn)顟B(tài)遍歷的過(guò)程,一條路徑從初始狀態(tài)到終止?fàn)顟B(tài)經(jīng)過(guò)的所有弧上的字母連接起來(lái)構(gòu)成一個(gè)字符串。給定一個(gè)字符串,對(duì)其進(jìn)行拼寫(xiě)檢查的過(guò)程實(shí)際上是在給定閾值t(t>0)的范圍內(nèi),尋找那些與輸入串的編輯距離小于t的路徑,這些路徑從初始狀態(tài)到終止?fàn)顟B(tài)經(jīng)過(guò)的所有弧上的字母連接起來(lái)構(gòu)成的字符串,就是要找的與輸入串最相似的單詞。

自動(dòng)機(jī)的實(shí)現(xiàn),按照何晗的文章

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

所述,關(guān)于有限自動(dòng)機(jī)找出正確字串,修改圖的深度優(yōu)先搜索算法即可,弄個(gè)stack,注意剪枝就行。

編輯距離指的是Damerau所定義的編輯距離,即兩個(gè)字符串之間的編輯距離等于使一個(gè)字符串變成另一個(gè)字符串而進(jìn)行的插入、刪除、替換或相鄰字符交換位置而進(jìn)行操作的最少次數(shù)。編輯距離可以參考何晗搜集整理的

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

我之前找到過(guò)一個(gè)Python版本的,但是那時(shí)候沒(méi)有寫(xiě)知乎,又不知道哪去了。什么語(yǔ)言不重要,知道實(shí)現(xiàn)過(guò)程比較重要,怎么優(yōu)化不重要,因?yàn)闆](méi)見(jiàn)過(guò)會(huì)優(yōu)化的。

基于有限自動(dòng)機(jī)的單詞拼寫(xiě)檢查完整實(shí)現(xiàn),沒(méi)有找到合適的代碼,有關(guān)拼寫(xiě)檢查的倉(cāng)庫(kù)有:

  • https://github.com/hunspell/hunspell star最多的一個(gè)拼寫(xiě)檢查
  • https://github.com/jmoy/norvig-spell norvig拼寫(xiě)檢查的各種編程語(yǔ)言實(shí)現(xiàn)
  • https://github.com/barrust/pyspellchecker norvig拼寫(xiě)檢查的純Python實(shí)現(xiàn)
  • https://github.com/bakwc/JamSpell

有關(guān)于拼寫(xiě)檢查這個(gè)事,有時(shí)間再寫(xiě)其他文章說(shuō)。寫(xiě)形式語(yǔ)言自動(dòng)機(jī)主要就是為了補(bǔ)上2型上下文無(wú)關(guān)文法以及對(duì)應(yīng)的下推自動(dòng)機(jī)。

3.grep命令

雖然說(shuō)操作機(jī)器是最沒(méi)腦子的技術(shù),但是還是把它弄熟,然后再狠狠地鄙視,跟導(dǎo)數(shù)據(jù)一樣,一個(gè)月開(kāi)200塊錢(qián)都多,就是個(gè)女工接線頭。

$ cat kkk akkk test file oooo ppppp# 在文件kkk中搜索匹配字符串"test file" $ grep "test file" kkk test file# 在文件kkk中搜索匹配字符串"es",并且加上行號(hào)輸出 $ grep -n es kkk 2:test file# 顯示所有以d開(kāi)頭的文件中包含"test"的行數(shù)據(jù)內(nèi)容 $ cat d1 1 test1 $ cat d2 2 test2 $ grep 'test' d* d1:test1 d2:test2# 在文件aa中顯示所有包含至少有5個(gè)連續(xù)小寫(xiě)字符的行數(shù)據(jù)內(nèi)容 $ cat aa aaaaa bbb AAAAA BBB aaaaaa $ grep -E "[a-z]{5}" aa aaaaa aaaaaa# 查找sshd進(jìn)行信息 # ps -ef|grep sshd root 3390 3376 0 09:09 pts/2 00:00:00 grep --color=auto sshd# 在aa文件中找出以b開(kāi)頭的行內(nèi)容 $ grep "^b" aa bbb# 在kkk文件中輸出以le結(jié)尾的行內(nèi)容 $ grep -E "le$" kkk test file# 在kkk文件中輸出包含es或 kk的行內(nèi)容 $ grep -E "(es)|(kk)" kkk akkk test file

總結(jié)

以上是生活随笔為你收集整理的java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。