簡體   English   中英

如何掃描和刪除UTF文本段落末尾的隨機字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM