使用 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

https://regex101.com/r/zR9iE8/2

我想你可以像这样使用正则表达式:

/([\d:]*)\s*GMT/

[Regex Demo]