我正在尝试将ELB负载均衡器日志映射为具有nginx等通用格式并具有此正则表达式
const splitElbEntry = (elbLogEntry) => R.match(/(?P<date>[0-9-]+T[0-9:]+)\.\S+/)
我收到此错误:
SyntaxError: Invalid regular expression: /(?P<date>[0-9-]+T[0-9:]+)\.\S+/: Invalid group
在https://regexr.com/3o06l上,它正在查找时间戳,但如果我添加一个新组,则正则表达式失败。
https://regex101.com/r/JOlrxS/5
的正确javascript等价物是什么非常感谢任何建议
答案 0 :(得分:1)
regexr中的选定风味是PCRE,你的最终风味是JS。 JS不支持(?P<name>...)
表示法。但是,(?<name>...)
将在ECMAScript 2018中实施(目前由Google Chrome支持)。
截至目前,您无法使用在所有主流浏览器中运行的命名捕获组。处理简单编号的捕获组。
答案 1 :(得分:0)
我使用编号的捕获组获得了所需的结果,感谢您的帮助。
https://regex101.com/r/JOlrxS/6
([0-9-]+T[0-9:]+)\.\S+\s+\S+\s+(\S+):\d+\s+\S+:\d+\s+\S+\s+(\S+)\s+\S+\s+(\S+)\s+\S+\s+\S+\s+(\S+)\s+\"\S+\s+\w+:\/\/([\w\-\.]*):\d+(\/\S*)\s+[^\"]+\"\s+\"([^\"]+)\"\s+\S+\s+\S+