【发布时间】:2021-04-24 19:05:48
【问题描述】:
我正在尝试按日期和事件列进行拆分。搜索“.”是不可能的,有些行包含多个以“.”结尾的句子,另外,有些行不以日期开头。该脚本的想法是使用正则表达式查找以片段“一个或两个数字、空格、字母、句点、空格”开头的行,然后将“点、空格”替换为稀有字符,例如“ @"。如果该行不以此片段开头,则在开头添加“@”。然后这个数组可以很容易地被这个符号(“@”)分成两部分并写入工作表。
很遗憾,今天出了点问题。我发现match(re) 始终是null。我请求帮助编写正确的正则表达式并解决问题。
原文:
6 月 1 日。天文学家报告缩小了快速无线电的来源 突发 (FRB)。它现在可能包括“紧凑对象合并 和正常核心坍缩超新星产生的磁星”。[3][4]
芬兰证实中子星存在夸克核 [5][6][7]
6 月 3 日。研究人员表明,与农村人口相比,城市红 伦敦的狐狸(如图)反映了驯化的模式 类似于驯养的狗,因为它们适应了他们的城市 [21]
发现最古老和最大的结构 玛雅地区,一个拥有 3000 年历史的金字塔顶平台 Aguada 据报道,Fénix 采用了 LiDAR 技术。
6 月 17 日。 XENON 暗物质研究机构的物理学家报告 超过 53 个事件,这可能暗示存在 假设的太阳轴子。
想要的结果:
代码:
function replace() {
const sheetName = "Sheet1";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const lr = sheet.getLastRow();
// const range = sheet.getRange(2, 4, lr - 1);
const range = sheet.getRange(100, 4, 5);
const arr = range.getValues();
const newArr = [];
const re = new RegExp("^([0-9]{1,2}\s[a-z]+\.)\s");
for (let i = 0; i < arr.length; i++) {
const match = arr[i][0].match(re);
if (match == null) {
let newEntry = "@" + arr[i];
newArr.push(newEntry);
} else {
// let newEntry = "#" + arr[i];
// newArr.push(newEntry);
}
}
// range.offset(0,1).setValues(newArr);
// console.log(newArr);
}
【问题讨论】:
-
请注意,使用常规字符串文字设置的正则表达式需要正确转义。它必须是
new RegExp("^([0-9]{1,2}\\s[a-z]+\\.)\\s")或/^([0-9]{1,2}\s[a-z]+\.)\s/ -
妈妈咪呀!你是绝对正确的!我不能在比赛中坐好几天。谢谢。
-
如何替换“.”的问题带有“@”(“else {}”中的部分代码)仍未解决。