我有一个 Google Apps 脚本 我需要提取 IP,问题是它们可能在同一行:
或者两行:
当 IP 位于同一行时,一切正常:
function regtest (){
//In this cell I have gmail content
var data = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LOG").getRange("C364").getValue();
var regex = new RegExp(/\- Destination ip address\(es\):(.*)/);
var e = regex.exec(data);
Logger.log(e);
}
但我不知道如何在不同行中提取 IP...
有人可以帮我吗?
最佳答案
我针对 进行了测试 - 目标 IP 地址:1.2.4.6、2.2.4.6、3.2.4.6,\n
4.2.4.6
字符串:
似乎以下工作:
function regtest (){
//In this cell I have gmail content
var data = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LOG").getRange("C364").getValue();
var regex = /- Destination ip address\(es\):((?:\s*,?\s*\d+(?:\.\d+){3})+)/;
var m, res = [];
m=regex.exec(data);
if (m) {
res = m[1].split(',').map(function (x) { return x.trim(); });
}
Logger.log(res);
}
结果:
基本上,((?:\s*,?\s*\d+(?:\.\d+){3})+)
捕获组匹配可选的 ,
包含 0+ 个空格,然后将类似 IP 的子字符串分成 1 组,然后您只需要用 将其拆分,
并从空格中删除结果项。
关于javascript - Google Apps 脚本中的条件正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49069552/