java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用
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總結
以上是生活随笔為你收集整理的java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序的民宿客房预订uniapp小程
- 下一篇: 国内免费汉语语料库-NLP