草庐IT

Regex-replace-with-function-evalu

全部标签

regex - 如何遍历正则表达式匹配组

假设我的数据是这样的:name=peterage=40id=99我可以创建一个正则表达式(\w+)=(\w+)要将姓名、年龄和ID匹配到组1,将peter、40、99匹配到组二。但是,我想遍历甚至选择性地遍历这些组。例如,如果group1的值是id,我想做不同的处理。所以算法就像//iteratethroughallthegroup1,ifIseegroup1valueis"id",thenIassignthecorrespondinggroup2keytosomeothervariable.E.g.,newVar=99我想做的第二件事是跳转到匹配组1的第三个实例并取出键“id”而不是

regex - 是否可以在 Golang 中提取字符串的一部分并在一次操作中替换这些部分?

假设我想从一个字符串中提取所有数字(很可能使用正则表达式匹配)并且我还想用通用占位符(如“#”)替换这些数字匹配。这很容易分两部分完成,先使用FindAll,然后使用ReplaceAll。但是,我对执行此类操作的性能成本深表怀疑。所以取一个字符串"sdasd3.2%sadas6...+8.9"替换为"sdasd#%sadas#...+#"得到一片[3.2,6.0,8.9]以尽可能高效的方式。编辑:我实现了regexp.FindAllString+regexp.ReplaceAllString并且对我的应用程序的性能影响非常小。我希望有空时尝试ElliotChance的方法并比较两者。

function - 缺少函数体

这个问题在这里已经有了答案:BodilessfunctioninGolang(2个答案)关闭5年前。当我在Golang中看到math.Sin时,我很纳闷,因为它是两个同名的函数,但第一个函数没有函数体。见下文:例如math.Acos://Acosreturnsthearccosine,inradians,ofx.////Specialcaseis://Acos(x)=NaNifx1funcAcos(xfloat64)float64funcacos(xfloat64)float64{returnPi/2-Asin(x)}但是当我想用下面的语句创建一个非常非常简单的uuid包时:packa

go - 函数值 ('function pointers' ) 在 Go 中究竟是如何实现的?

来自thedocumentationforreflect.Value.Pointer():Ifv'sKindisFunc,thereturnedpointerisanunderlyingcodepointer,butnotnecessarilyenoughtoidentifyasinglefunctionuniquely.TheonlyguaranteeisthattheresultiszeroifandonlyifvisanilfuncValue.很明显,函数值变量必须包含的不仅仅是代码指针。鉴于Go支持方法指针,这不足为奇-但实际的底层实现是什么?(对于使用反射创建的函数值,它有何

regex - Go validator.v2 为正则表达式给出错误 "unknown tag"

我一直在努力理解为什么一些正则表达式在使用validator.v2时给我一个错误“Unknowntag”在golang中打包。它适用于某些正则表达式,但不适用于其中包含“{}”的某些正则表达式,并且当我使用validator.Validate()时,它在运行时给我一个错误“未知标记”。代码如下:typeCompanystruct{Namestring`validate:"regexp=^[a-zA-Z.]{1,100}$"`}这在运行时给我以下错误:Name:unknowntag但是这个正则表达式工作得很好typeCompanystruct{Namestring`validate:"r

regex - 去正则表达式不匹配

我正在尝试从自定义负载中提取JSON对象。我的正则表达式在这里工作正常:https://regex101.com/r/G5lBDC/1/但是Go没有返回任何匹配项re:=regexp.MustCompile(`/payload:\\"(.+?)\\\\\\"\\\\/g`)rawResponse:="version:1response:"rawJSON:=re.FindStringSubmatch(rawResponse)去Playgroundhttps://play.golang.org/p/XRfbExNa9V 最佳答案 你可以

regex - Go:处理多行命令输出并解析

我正在尝试从命令行实用程序中提取信息,在本例中是linuxntpq-crv命令。输出:associd=0status=0638leap_none,sync_ntp,3events,no_sys_peer,version="ntpd4.2.6p5@1.2349-oFriJul2217:30:51UTC2016(1)",processor="x86_64",system="Linux/3.16.0-4-amd64",leap=00,stratum=2,precision=-22,rootdelay=25.435,rootdisp=49.398,refid=8.8.8.8,reftime=d

regex - 从捕获中排除符号并仅获取所需数据?

我有包含天、小时、分钟的文本,格式如下:4d.12h.32m.7h.22m.3d.14h.注意,其中一些可能不存在(例如:3d.14h.不包含分钟)我想捕获命名组中的数字,但不捕获字符(d.h.m.)。所以最后我需要得到类似这张map的结果:['days'=>4,'hours'=>12,'minutes'=>32,]这是我写的:(?P(\d+)d.)?(?P(\d+)h.)?(?P(\d+)m.)?链接:https://regex101.com/r/FERRnd/1但似乎有一些空元素,我觉得这不是完成这项任务的最佳正则表达式。有什么方法可以只接收命名参数作为数字而不是其他任何东西(没有

regex - 为什么 regexp.FindAllString 会返回带有不需要的空字符串的匹配结果?

这个问题在这里已经有了答案:Whatspecialcharactersmustbeescapedinregularexpressions?(12个答案)关闭5年前。有正则表达式:302\=.+?190\=(\d|\.)+|`这是要匹配的字符串:8=FIX.4.4|9=181|35=i|34=6|49=XCD1|52=20171025-08:33:56.791|56=Q142|296=3|302=5|295=1|299=0|188=0.74499|190=0.74549|302=4|295=1|299=0|188=0.74996|190=0.75026|302=3|295=1|299=0

http - go routine with net/http 使用 viper config 动态创建

我让viper在config.yml中提供以下值并在此处附加其余配置:servers:-projectname:testdirectory:D:\playgroud\testport:1029-projectname:test1directory:D:\playground\test1port:1030Coniguration.go包含packageconfigimport()typeConfigurationstruct{Servers[]ServerConfiguration}packagemainimport("config""github.com/spf13/viper""lo