我发现以下正则表达式从 influxdb 查询中提取当前日期 查询;
SHOW DIAGNOSTICS
正则表达式提取日期;
/([0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2})/
这导致;
2024-05-07
然后我想将 07 天(或任何数字)更改为 01。这样我就有了当月的当前开始日,然后我可以在 grafana 的统计面板中使用它(本月和上个月的千瓦时量)
我读了这篇文章 链接 不幸的是,我无法完全理解替换部分,因为它适用于输入中的每个字符串 我真的很想找到线索,但不知何故无法在任何地方找到我要找的东西 它的一部分应该是? 分成 2 或 3 组并使用例如$2,我认为是用括号来做到的;
/([0-9]{4}[-]{1}[0-9]{2}[-]{1})([0-9]{2})\
regex101 说;
2nd Capturing Group `([0-9]{2})`
Match a single character present in the list below [0-9]
{2} matches the previous token exactly 2 times
之后我需要以某种方式进行替换,这就是我陷入困境的地方,我想我以某种方式需要使用其中的一些代码;
Ok, with binary numbers only it's easy, just replace 0?(1)+$ with 1 followed by a number of zeroes corresponding to the number of groups (containing 1) found by the regex
据说 grafana 使用的正则表达式是面向 go-lang 的,但我认为(不确定)PCRE 接近/兼容
这里有没有人可以引导我走向正确的方向或告诉我如何做到这一点?
在上面的文字中
我会选择更简单的解决方案:
match = r"[0-9]*\-[0-9]*\-"
t = re.search(match, "2017-04-04")
res = t.group() + "01" # 2017-04-01
或者:
match = r"([0-9]*\-[0-9]*)\-[0-9]*"
tt = re.sub(match, r'\g<1>-01', '2017-04-09')
print(tt) # 2017-04-01