[英]How to scan and remove random characters in the end of paragraphs in UTF text
這是我要過濾的文檔( https://gist.github.com/jianbo/2192f8f1d25a422ed6a5 )
每個段落都以這樣的隨機字符串結尾Q: UA" j$ w& p
,我想刪除它們,我的想法是掃描所有以句號開頭並以3個以上空格結尾的字符的匹配項。
這就是我所擁有的,但是我如何檢測前句點和三個空格?
示例數據(但請查看GIT文本 ):
Q:UA“ j $ w&p這么長再次,這應該穩定的面試,不知道會怎么樣
我的密碼
data.match(/[a-zA-Z~!@#$%^&*()_+{}|\;':",./<>? ]/g).join('')
此輸出
"this should stay : Q: U A" j$ w& p again this should stady"
我會嘗試在正則表達式中添加特殊字符:
var data = 'yourstring';
data.replace(/[^\w\sñáóí\&\$\"]/gi, '');
這些看似錯誤的字符位於U + 3002 Unicode字符“ IDEOGRAPHIC FULL STOP”之后。 您沒有說什么UTF,但是它看起來像是網絡上的內容,因此我猜您很有可能會以UTF-8格式下載。
我不知道您使用的是什么正則表達式引擎,以及您是否支持Unicode,所以我提供了一個非常通用的“ perl”命令行解決方案。 此正則表達式不需要16位或32位庫; 它可以在UTF-8文件上以常規字節模式工作:
perl -pe 's/(?=\xE3\x80\x82)(.*\xE3\x80\x82).*/\1/' your_file
第一部分僅檢查我們是否具有U + 3002表意句號,它在UTF-8中是一個三字節代碼點,十六進制值為E3 8082。如果斷言為真(即,我們有一個U +3002),它最多捕獲並包括句點U + 3002字符。 如果不想包含句號,只需將右括號從\\ x82之后移到第一個星號之后,即:
s/(?=\xE3\x80\x82)(.*)\xE3\x80\x82.*/\1/
同樣,沒有提供有關正則表達式引擎/風味或編程語言等的任何詳細信息,這可能需要拔出匹配項,進行轉義,並拔出替換字符串以進行單獨的調用等,但是我想我是為您提供了足夠的指導,希望您能在我的回應中找到價值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.