使用谷歌脚本我试图匹配一个总是这样的字符串部分:* YYYYMMDD; hhmm 例如: 20170701; 0900 *
我定义了这个正则表达式:
var regExp = ('(?:\*)(?P<date>\d+)(?:\;)(?P<time>\d+)(?:\*)','gi');
然后使用以下方法调用它:
var datepart = textbody.match(regExp);
但是我没有得到任何匹配,尽管https://regex101.com/中的相同文本效果很好 . 知道我做错了什么吗?
1 回答
您为PCRE引擎创建了一个正则表达式,而在Google Apps脚本中,您应该使用一个用于JavaScript .
删除所有已命名的捕获组(JS不支持它们,即
(?P<date>\d+)
=>(\d+)
),使用正则表达式文字(即RegExp("pattern", "gi")
=>/pattern/gi
,但此处不需要i
,只有在模式中有字母时才使用它),删除全局修饰符以获得与捕获组完整匹配的匹配 .请注意
(?:\*)
=\*
,因为非捕获组仍然是消耗模式(即它匹配的内容被添加到匹配值) . 由于您希望获得正则表达式的子部分,因此您只需要关注捕获组,即那些(...)
部分 .