草庐IT

REGEX_EXTRACT

全部标签

regex - Golang 正则表达式替换什么都不做

我想用破折号替换任何非字母数字字符序列。我写的一个片段如下。但是它不起作用,我完全不知道为什么。谁能解释一下为什么该片段的行为不像我期望的那样,以及实现此目的的正确方法是什么?packagemainimport("fmt""regexp""strings")funcmain(){reg,_:=regexp.Compile("/[^A-Za-z0-9]+/")safe:=reg.ReplaceAllString("a*-+fe5v9034,j*.AE6","-")safe=strings.ToLower(strings.Trim(safe,"-"))fmt.Println(safe)//

regex - Go 正则表达式中的负前瞻

我正在尝试在Go中使用负前瞻。以下正则表达式:BBB(((?!BBB).)*)EEEhttp://rubular.com/r/Zw1vopp1MF但是,在Go中我得到:errorparsingregexp:invalidorunsupportedPerlsyntax:`(?!`还有其他选择吗? 最佳答案 由于技术原因,不支持负前瞻,特别是因为它与库的O(n)时间保证相冲突。见golang-nutsgroupdiscussion关于这一点,以及RegularExpressionMatchingintheWild中的注意事项部分.您可以

regex - 使用 Go 正则表达式中的命名匹配

我来自Python,所以我可能只是没有以正确的方式看待这个问题。我想创建一个相当复杂的正则表达式并能够按名称访问匹配的字段。我似乎找不到一个很好的例子。我设法得到的最接近的是:packagemainimport("fmt""regexp")varmyExp=regexp.MustCompile(`(?P\d+)\.(\d+).(?P\d+)`)funcmain(){fmt.Printf("%+v",myExp.FindStringSubmatch("1234.5678.9"))match:=myExp.FindStringSubmatch("1234.5678.9")fori,name

regex - 正则表达式中的 a-z-A-Z 是什么意思?

我一直在使用其他人的代码,但遇到了正则表达式[^0-9a-z-A-Z]。这与常见的[^0-9a-zA-Z]非常相似,后者旨在排除非字母数字字符,但请注意中间的额外破折号,小写z和大写A.我对正则表达式不是很熟悉,但我现在已经阅读了几页关于它们的内容,我所看到的规则似乎都没有涵盖这种语法的含义。也许它甚至不是有效的语法,但Golang正则表达式解释器似乎并不介意。我很感激任何澄清。谢谢。 最佳答案 字符类中不能被解释为范围的破折号被解释为文字破折号。所以表达式不包括字符0到9、a到z、A到Z和-。这就是没有语法错误的原因。这可能是一个

regex - 如何在 Go 正则表达式中获取捕获组功能

我正在将一个库从Ruby移植到Go,并且刚刚发现Ruby中的正则表达式与Go(googleRE2)不兼容。我注意到Ruby和Java(加上其他语言使用PCRE正则表达式(perl兼容,支持捕获组)),所以我需要重新编写我的表达式,以便它们在Go中编译正常。例如,我有以下正则表达式:`(?\d{4})-(?\d{2})-(?\d{2})`这应该接受如下输入:2001-01-20捕获组允许将年、月和日捕获到变量中。要得到每个组的值,很容易;您只需使用组名索引返回的匹配数据,然后返回值。因此,例如要获取年份,类似于以下伪代码:m=expression.Match("2001-01-20")y

regex - http.HandleFunc 模式中的通配符

在Go(语言)中注册处理程序时,有没有办法在模式中指定通配符?例如:http.HandleFunc("/groups/*/people",peopleInGroupHandler)*可以是任何有效的URL字符串。或者是匹配/groups并从处理程序(peopleInGroupHandler)func中找出其余部分的唯一解决方案? 最佳答案 http.Handler和http.HandleFunc的模式不是正则表达式或glob。没有办法指定通配符。他们记录在案here.也就是说,创建自己的处理程序并不难,它可以使用正则表达式或您想要的

regex - 如何在 Go 中执行不区分大小写的正则表达式?

我可以编写正则表达式来处理这两种情况,例如regexp.Compile("[a-zA-Z]"),但我的正则表达式是由用户:reg,err:=regexp.Compile(strings.Replace(s.Name,"","[\\._-]",-1))s.Name是名称。这可能类似于“西北偏北”。现在,对我来说最明显的解决方案是遍历s.Name的每个字符并为每个字母写'[nN]':fori:=0;i但我觉得这是一个相当不优雅的解决方案。速度不是问题,但我需要知道是否有其他方法。 最佳答案 您可以将不区分大小写的标志设置为正则表达式中的

json - RestClientException : Could not extract response. 找不到合适的 HttpMessageConverter

使用curl命令:curl-u591bf65f50057469f10b5fd9:0cf17f9b03d056ds0e11e48497e506a2https://backend.tdk.com/api/devicetypes/59147fd79e93s12e61499ffe/messages我收到JSON响应:{"data":[{"device":"18SE62","time":1494516023,"data":"3235","snr":"36.72",...我将响应保存在一个txt文件中并使用jackson解析它,一切都很好ObjectMappermapper=newObjectMa

regex - 什么是最有效的不区分大小写的 grep 用法?

我的目标是匹配属于Yahoo!的电子邮件地址域家族。在*nix系统(我将使用Ubuntu)中,这些匹配模式的方法中的任何一种都有哪些优点和缺点?如果还有其他我无法想象的更优雅的解决方案,请分享。他们在这里:使用grep带选项-i:grep-Ei"@(yahoo|(y|rocket)mail|geocities)\.com"将字符全部转换为大写或小写,然后grep:tr[:upper:][:lower:]为模式中的每个字符包含一个字符集(下面的内容当然不匹配“@rOcketmail.com”之类的内容,但是如果我检查每个字符的大小写,您就会知道它会变成什么):grep-E"@([yY]a

regex - 在 Linux 中,名称与正则表达式匹配的文件的磁盘使用情况?

因此,在许多情况下,我想知道我的磁盘空间有多少被什么使用,所以我知道要摆脱什么、转换为另一种格式、存储在其他地方(例如数据DVD)、移动到另一个分区等。在这种情况下,我正在查看来自SliTazLinux的Windows分区。可启动媒体。在大多数情况下,我想要的是文件和文件夹的大小,为此我使用基于NCurses的ncdu:               但在这种情况下,我想要一种方法来获取与正则表达式匹配的所有文件的大小。.bak文件的示例正则表达式:.*\.bak$我如何获得这些信息,考虑到带有核心GNU实用程序的标准Linux或BusyBox?编辑:输出旨在被脚本解析。