gpt4 book ai didi

javascript - 使用 Google Script,如何在使用正则表达式搜索给定字数限制内的其他字词时排除字词?

转载 作者:行者123 更新时间:2023-11-30 19:03:09 24 4
gpt4 key购买 nike

这里是非常没有经验的编码器,我有一个脚本使用正则表达式在字数限制内搜索字词,例如在 10 个字词之间查找 word1word2 .然后它将结果打印到电子表格中。但是,我想弄清楚如何将排除标准包含到我的脚本中,例如如果 word3 不会出现在这 10 个单词中。我想我设法使用否定前瞻来包括排除标准,但是当我这样做时,字数限制不再起作用。这是我的脚本:

function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('Sheet1');
var resultsSheet = ss.getSheetByName('Results1');
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues();
var regexp = /^((?!dispute).)*([\W*(the)\s+(\w+\s+){0,10}(account)])$|^((?!dispute).)*([(account)\s+(\w+\s+){0,10}(the)])$/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if (regexp.exec(column) !== null) {
result.push(row);
}
}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length, 3);
resultsSheetRange.setValues(result);
}
}

这是我没有排除标准的工作代码:

function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('Sheet1');
var resultsSheet = ss.getSheetByName('run,use,card');
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues();
var regexp = /\W*(account)\W*\s+(\w+\s+){0,10}(the)|(the)\s+(\w+\s+){0,10}(account)/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if (regexp.exec(column) !== null) {
result.push(row); }}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length, 3);
resultsSheetRange.setValues(result);}}

最佳答案

如果您只想知道某个单词是否包含在单元格中,则不需要正则表达式

使用 IndexOf() 更容易

示例:

if(column.indexOf("dispute")!=-1){
Logger.log("Column contains dispute");
}
else if (regexp.exec(column) !== null) {
result.push(row);
}

因此,您不需要将“dispute”合并到您的 regexp 定义中。

将它应用到您的代码中:

function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('Sheet1');
var resultsSheet = ss.getSheetByName('Results1'); //mind the name
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues();
var regexp = /\W*(account)\W*\s+(\w+\s+){0,10}(the)|(the)\s+(\w+\s+){0,10}(account)/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if(column.indexOf("dispute")!=-1){
Logger.log("Column in row "+(i+1)+" contains dispute");
} else if (regexp.exec(column) !== null) {
result.push(row); }
}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length, 3);
resultsSheetRange.setValues(result);
}
}

关于javascript - 使用 Google Script,如何在使用正则表达式搜索给定字数限制内的其他字词时排除字词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59282275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com