我在純文本檔案(utf-8)中有這個示例句子:
today is an interest-
ing day
第一行的“-”后跟只有\n (我已經\r從檔案中洗掉了所有內容,以統一處理不同的來源)我想將 2 行包裝在 1 行中,因為“-”,這意味著前面的單詞已被截斷并在下一行繼續。為了加入這種路線,我嘗試過的東西是這樣的:
text.replace(/[\n-]/g, "")
但似乎沒有作業。實作這一目標的正確方法是什么?
我希望能夠處理這兩種可能的結局(或您可能預期的類似情況):
interest-\n
interest- \n (possible blanks inserted before \n)
uj5u.com熱心網友回復:
您可以使用
text.replace(/\b-\s*\n\b/g, "")
text.replace(/\b-[^\S\r\n]*\n\b/g, "")
請參閱正則運算式演示。詳情:
\b- 一個詞邊界-- 一個連字符\s*- 零個或多個空格 /[^\S\r\n]*- 零個或多個水平空格(支持 CRLF、CR 和 LF 結尾)\n- 換行符\b- 一個詞的邊界。
請參閱 JavaScript 演示:
console.log( "today is an interest- \ning day".replace(/\b-\s*\n\b/g, "") );
console.log( "today is an interest-\ning day".replace(/\b-\s*\n\b/g, "") );
僅檢查兩端字母的 Unicode 感知模式可能如下所示text.replace(/(?<=\p{L}\p{M}*)-[^\S\r\n]*\n(?=\p{L})/gu, ""),其中(?<=\p{L}\p{M}*)檢查前面的字母 可選變音符號-并(?=\p{L})檢查換行符后面的字母。請參閱正則運算式演示。
uj5u.com熱心網友回復:
在您的正則運算式中,此用途有以下三點錯誤:
您在 - 之前有新行
[] 表示至少匹配其中一個的字串列
您需要添加 \s 以匹配空格
所以試試這個:
text.replace(/-\s*\n/g, "")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316105.html
標籤:javascript 正则表达式 代替 新队
上一篇:從串列中過濾/洗掉給定模式的單詞
