gpt4 book ai didi

javascript - 来自 GmailMessage 类正则表达式的 Google Apps 脚本 getPlainBody() 不起作用

转载 作者:行者123 更新时间:2023-12-04 07:14:12 33 4
gpt4 key购买 nike

这是我关于 stackoverflow 的第一个问题,所以请告诉我如何提高其他人的可读性。
我试图在我从 GmailMessage 类中的 getPlainBody() 获得的字符串上使用正则表达式,但是当我尝试直接在 getPlainBody() 返回的字符串上执行它时它不起作用,但是当我手动添加\n 字符时效果很好。
有效的代码:

function RegularExp() {

//manually entered \n characters into string that I copied and pasted from getPlainBody()

var string = "Personal Message\nraw material: oak wood 100kg\nTRACKING NUMBER 7777777777\n<somehyperlink\nFROM SomeBrand";

//my goal is to get: raw material: oak wood 100kg

var regExp = new RegExp("(.*?)\n(?=TRACKING NUMBER)","g");

var PersonalMessage = regExp.exec(string)[1];
Logger.log(PersonalMessage); //works perfectly fine

}
不起作用的代码:
for (var j in messages){
var message = messages[j];
var plainText = message.getPlainBody(); //getting plainbody of fedex mail of interest

//trying to extract the personal message
var regExp = new RegExp("(.*?)\n(?=TRACKING NUMBER)","g");
var PersonalMessage = regExp.exec(plainText)[1];
Logger.log(PersonalMessage); //won't show anything
}
我的问题是为什么当我手动输入\n 时它会起作用,但当我使用从 getPlainBody() 返回的字符串时却不起作用?我正在使用完全相同的正则表达式模式,但不明白为什么。
以下是我用来尝试解决我的问题的链接(或者我可能只是愚蠢的无法将解决方案应用于此问题)
Newline in gmail app script getplainbody function
Google Apps Script: getPlainBody() weird behavior
Regex - google apps script
谢谢

最佳答案

问题在于.与 JavaScript 正则表达式(ECMAScript 风格)中的 CR 字符不匹配。
您可以使用

var regExp = /(.*)(?=\r?\nTRACKING NUMBER)/g; 
正则表达式匹配
  • (.*) - 第 1 组:除换行符以外的任何零个或多个字符(它不匹配 LF 和 CR 字符)
  • (?=\r?\nTRACKING NUMBER) - 与紧随其后的位置匹配的正向前瞻
  • \r? - 一个可选的 CR(回车符)
  • \n - 换行符
  • TRACKING NUMBER - 一些固定字符串(在下一行的末尾)。

  • 关于javascript - 来自 GmailMessage 类正则表达式的 Google Apps 脚本 getPlainBody() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68883692/

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