正则表达式在读取当前日期后将 dd 天数更改为 01 (Grafana-Influxdb)

问题描述 投票:0回答:1

我发现以下正则表达式从 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 接近/兼容

这里有没有人可以引导我走向正确的方向或告诉我如何做到这一点?

在上面的文字中

regex grafana influxdb pcre
1个回答
0
投票

我会选择更简单的解决方案:

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
© www.soinside.com 2019 - 2024. All rights reserved.