我目前正在使用Google Script编写脚本。我试图通过写一些方式来选择方括号内的字符:
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です[Audio.Category:Jim]"
删除表情符号以及括号内未定义的其他字符。
答案 0 :(得分:2)
要将]
和[
包含到JavaScript正则表达式字符类中,您需要转义]
,而不必转义[
:
/[abc[\]xyz]/
^^^
如果您需要支持ASCII字母和日语,则需要添加Japanese letter ranges:
/[^\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正则表达式。