html 正则表达式 中文,正则表达式的中文搜索
這幾天在研究爬蟲,想在抓回來的文本中找出中文來,就捎帶著研究了一下正則。沒想到一如侯門深似海。
關于正則,有個很出名的笑話:有個程序員遇到了問題,他決定要用正則表達式去解決。現在他有了兩個問題。(實用正則的時候肯定會有問題,而原來的問題依然還在)
還有這樣一個笑話:給一個程序員正則表達式,他會拿著去匹配出字符;教給他如何實用正則表達式,你會得到一個渾身是問題的人。
(原諒我這生硬的翻譯。)
通過so.com查詢關鍵字,會得到一個utf-8 編碼的字符串,當查詢科技的時候:
suggest_so({"query":"科技","result":[{"word":"科技美學"},{"word":"科技苑"},{"word":"科技小制作大全"},{"word":"科技管理研究"},{"word":"科技網"},{"word":"科技少女喵","obdata":"{\"t\":\"video\"}"},{"word":"科技部"},{"word":"科技日報"},{"word":"科技超能王","obdata":"{\"mt\":\"novel_free\",\"md\":[\"http:\/\/p3.qhimg.com\/dr\/80_100_100\/t0155de86b15e45143c.jpg\",\"\u79d1\u6280\u8d85\u80fd\u738b\",\"\u516c\u5143\u524d\u7684\u72d0\",\"http:\/\/m.leidian.com\/ebook\/detail\/152564325945203970?src=m_so\"]}"},{"word":"科技皇朝",\"md\":[\"\",\"\u79d1\u6280\u7687\u671d\",\"\u7b14\u6307\u6c5f\u5c71\",\"http:\/\/m.leidian.com\/ebook\/detail\/11001634457921487175?src=m_so\"]}"}],"version":"2.10"}); 我們想要的是后面那個字典。但是直接轉換,或者split之類的基本都不行。這樣就要拿出正則表達式來匹配了。
很顯然,我們想要的是每個“ ”中間的中文。我去網上查中文的匹配,發現每篇文章都一樣,只是提了中文的utf-8的范圍:
unicode中中文的編碼為\u4e00-\u9fa5
最讓我失望的是,谷歌的第一頁的中文文章幾乎都一模一樣。
于是我就直接去匹配中文,正則表達式如下:
"\"[\u4e00-\u9fa5]+\""
解釋一下,外面的引號代表這是個字符串,里面的\"是轉義的",因為“在字符串中有其他定義,想要搜索”就要加\使其保持原來的意義。
中括號內\u指的是unicode,4e00-9fa5則是中文的范圍。中括號內的意思就是這個范圍內的任何一個。
后面的+指的是前面那個表達式的一個或多個,也就是中括號內的一個或多個。
結果我得到的是一堆“:”的重復。我百思不得其解,懷疑是編碼的問題。把上面那個字符串命名為html
html_code = html.decode('utf8')
再搜索,發現只搜出了空集。
*****經過了很久很久******
后來發現字符串也需要標注是unicode
u"\"[\u4e00-\u9fa5]+\""
嗯,就這樣解決了。不過搜索出來的還是結果帶著“”,我只想要其中的關鍵字。就把想要取出的詞加上小括號即可。
u"\"([\u4e00-\u9fa5]+)\""
代碼是這個樣子的:
html_code = html.decode('utf8')
pattern = re.compile(u"\"([\u4e00-\u9fa5]+)\"")
results = pattern.findall(html_code)
for result in results:
print "%s" %result結果是:
科技
科技美學
科技苑
科技小制作大全
科技管理研究
科技網
科技少女喵
科技部
科技日報
科技超能王
科技皇朝
PS:其實沒有必要寫這篇文章的,但是實在是太郁悶了。等我抽出身了,一定要好好研究正則表達式。
————————————
github主頁:https://github.com/gt11799
E-mail:gting405@163.com
總結
以上是編程之家為你收集整理的正則表達式的中文搜索全部內容,希望文章能夠幫你解決正則表達式的中文搜索所遇到的程序開發問題。
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
小編個人微信號 jb51ccc
喜歡與人分享編程技術與工作經驗,歡迎加入編程之家官方交流群!
總結
以上是生活随笔為你收集整理的html 正则表达式 中文,正则表达式的中文搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html在线转移,HTML5迁移
- 下一篇: js样式会覆盖html样式,js实现ht