nub*_*bie 3 javascript regex gmail-api
我正在使用google脚本尝试匹配始终如下所示的字符串部分:* YYYYMMDD; hhmm *例如:* 20170701; 0900 *
我定义了这个正则表达式:
var regExp = ('(?:\*)(?P<date>\d+)(?:\;)(?P<time>\d+)(?:\*)','gi');
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令调用它:
var datepart = textbody.match(regExp);
Run Code Online (Sandbox Code Playgroud)
但是,尽管https://regex101.com/中的相同文本效果很好,但我没有找到任何匹配项。知道我在做什么错吗?
您为PCRE引擎创建了一个正则表达式,而在Google Apps脚本中,您应该为JavaScript使用一个正则表达式。
删除所有命名的捕获组(JS不支持它们,即(?P<date>\d+)=> (\d+)),使用正则表达式文字(即RegExp("pattern", "gi")=> /pattern/gi,但这i不是必需的,仅在模式中包含字母时才使用它),删除全局修饰符以与完整的捕获组匹配。
var rx = /\*(\d+);(\d+)\*/;
var datepart = textbody.match(rx);
var date, time;
if (datepart) {
date = datepart[1];
time = datepart[2];
}
Run Code Online (Sandbox Code Playgroud)
请注意(?:\*)=,\*因为非捕获组仍然是消耗模式(即,其匹配项将添加到匹配值中)。由于要获取正则表达式的子部分,因此只需要关注捕获组,即那些(...)部分。