簡體   English   中英

正則表達式在方括號內匹配方括號Google Spreadsheet

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

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