使用 g-mail 集成的正前瞻时间的正则表达式
Regex for time using positive lookahead with g-mail integration
我收到了以下数据,我正在尝试使用正则表达式捕获这些数据。我似乎无法让它工作我想使用白色 space 作为停止,但到目前为止没有运气。
located on 10/6/2015 5:18:14 GMT
我正在使用的正则表达式:
2015\s*(.+?)(?=\sGMT)
我试图简单地获取 5:18:14
但我最终捕获了 5 5:18:14
任何帮助都会很棒,我相信这是一个简单的修复,但我现在想不起来。
谢谢大家的帮助,我最终把这个作为我的最终剧本。我最终使用了 shaA.T 的正则表达式。
我正在从 gmail 电子邮件中获取我需要的数据,但它似乎只在每个线程的第一条消息中 运行。我一直在尝试使用 google 中的不同方法,但没有成功。
我试图让这个脚本遍历 g-mail 收件箱中的每封邮件,而不仅仅是每个线程的第一封邮件。你们对 g-mail 应用程序有任何了解吗?这是我第一次使用 google 脚本。
function processInboxToSheet() {
//var threads = GmailApp.getInboxThreads();
// Have to get data separate to avoid google app script limit!
var messages = GmailApp.getMessagesForThread();
for (var i = 0 ; i < messages.length; i++) {
var content = messages[0].getRawContent();
var SPREADSHEET_URL = "https://docs.google.com/spreadsheets";
var SHEET_NAME = 'Sheet1';
var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = spreadsheet.getSheetByName(SHEET_NAME);
var content = messages[0].getRawContent();
// implement your own parsing rule inside
if (content) {
var tmp;
tmp = content.match(/\<\!\-\-\soutRadius\s\s\[*(.+?)\]/);
var radius = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Radius';
tmp = content.match(/\<\!\-\-\sX\s\s\[*(.+?)\]/);
var longitude = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Latitude';
tmp = content.match(/\<\!\-\-\sY\s\s\[*(.+?)\]/);
var latitude = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Longitude';
tmp = content.match(/\The mobile number was located on\s*(.+?)\s/);
var date = (tmp && tmp[1]) ? tmp[1] : 'Unknown date';
tmp = content.match(/([\d:]*)\s*GMT/);
var time = (tmp && tmp[1]) ? tmp[1] : 'Unknown time';
sheet.appendRow([date, time, longitude, latitude, radius]);
Utilities.sleep(500);
}
}
};
这有效,plus 仅适用于时间值 - 这意味着它不会匹配 foo GMT:
[0-9]{1,2}(:[0-9]{2}){2}(?=\sGMT)
解释:
[0-9]{1,2} One or two numbers (the hour)
(:[0-9]{1,2}){2} Two times a colon followed by two numbers (minutes, seconds)
(?=\sGMT) The lookahead
我想你可以像这样使用正则表达式:
/([\d:]*)\s*GMT/
我收到了以下数据,我正在尝试使用正则表达式捕获这些数据。我似乎无法让它工作我想使用白色 space 作为停止,但到目前为止没有运气。
located on 10/6/2015 5:18:14 GMT
我正在使用的正则表达式:
2015\s*(.+?)(?=\sGMT)
我试图简单地获取 5:18:14
但我最终捕获了 5 5:18:14
任何帮助都会很棒,我相信这是一个简单的修复,但我现在想不起来。
谢谢大家的帮助,我最终把这个作为我的最终剧本。我最终使用了 shaA.T 的正则表达式。
我正在从 gmail 电子邮件中获取我需要的数据,但它似乎只在每个线程的第一条消息中 运行。我一直在尝试使用 google 中的不同方法,但没有成功。
我试图让这个脚本遍历 g-mail 收件箱中的每封邮件,而不仅仅是每个线程的第一封邮件。你们对 g-mail 应用程序有任何了解吗?这是我第一次使用 google 脚本。
function processInboxToSheet() {
//var threads = GmailApp.getInboxThreads();
// Have to get data separate to avoid google app script limit!
var messages = GmailApp.getMessagesForThread();
for (var i = 0 ; i < messages.length; i++) {
var content = messages[0].getRawContent();
var SPREADSHEET_URL = "https://docs.google.com/spreadsheets";
var SHEET_NAME = 'Sheet1';
var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = spreadsheet.getSheetByName(SHEET_NAME);
var content = messages[0].getRawContent();
// implement your own parsing rule inside
if (content) {
var tmp;
tmp = content.match(/\<\!\-\-\soutRadius\s\s\[*(.+?)\]/);
var radius = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Radius';
tmp = content.match(/\<\!\-\-\sX\s\s\[*(.+?)\]/);
var longitude = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Latitude';
tmp = content.match(/\<\!\-\-\sY\s\s\[*(.+?)\]/);
var latitude = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Longitude';
tmp = content.match(/\The mobile number was located on\s*(.+?)\s/);
var date = (tmp && tmp[1]) ? tmp[1] : 'Unknown date';
tmp = content.match(/([\d:]*)\s*GMT/);
var time = (tmp && tmp[1]) ? tmp[1] : 'Unknown time';
sheet.appendRow([date, time, longitude, latitude, radius]);
Utilities.sleep(500);
}
}
};
这有效,plus 仅适用于时间值 - 这意味着它不会匹配 foo GMT:
[0-9]{1,2}(:[0-9]{2}){2}(?=\sGMT)
解释:
[0-9]{1,2} One or two numbers (the hour)
(:[0-9]{1,2}){2} Two times a colon followed by two numbers (minutes, seconds)
(?=\sGMT) The lookahead
我想你可以像这样使用正则表达式:
/([\d:]*)\s*GMT/