[英]Regex Matching Square Brackets Within Square Brackets Google Spreadsheet
我目前正在使用Google腳本編寫腳本。 我試圖通過寫選擇方括號內不是字符的任何東西:
var cleantext = text.replace(/[^\\s\\w"!,、。\\.??!:]/g,'');
我也想保留“ [”和“]”,並且按照這里的一些教程嘗試“ \\\\]”和“ \\\\ [”
var cleantext = text.replace(/[^\\s\\w"!,、。\\.??!:"\\\\]""\\\\["]/g,'');
或嘗試\\\\]和\\\\ [
var cleantext = text.replace(/[^\\s\\w"!,、。\\.??!:\\\\]\\\\[]/g,'');
請隨意更改我的問題的措辭,因為我發現我可能不知道我實際上要問的是哪個問題,因為Stackoverflow上已經有很多類似的問題,並且標題相似。
我希望編輯一整列的單元格,這些單元格由日語,中文和英語字符組成。
例如:“こんにちは,私はJimです😃| [Audio.Category:Jim]”將輸出為:“こんにちは,私はJimです[Audio.Category:Jim]”
刪除表情符號和方括號內未定義的其他字符。
要將]
和[
包含在JavaScript正則表達式字符類中,您需要轉義]
而不必轉義[
:
/[abc[\]xyz]/
^^^
如果僅需要支持ASCII字母和日語,則需要添加日語字母范圍 :
/[^\s"!,、。.??!:[\][A-Za-z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF\u2605-\u2606\u2190-\u2195\u203B]+/g
這是一個示例解決方案:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange('F13').getValue();
Logger.log(cell);
var reg_ascii_letter = "A-Za-z";
var reg_japanese_letter = "\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF\\u2605-\\u2606\\u2190-\\u2195\\u203B";
var rx = new RegExp("[^\\s\"!,、。.??!:[\\][" + reg_ascii_letter + reg_japanese_letter + "]+", "g");
Logger.log(rx);
var nval = cell.replace(rx, '').replace(/(\s){2,}/g, '$1');
sheet.getRange('F15').setValue(nval);
}
以類似的方式,您可以為任何字母構建Unicode正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.