其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

如何在正则表达式中精确匹配部分字符串并忽略模式前后的任何字符?

GG网络技术分享 2025-03-18 16:15 3


问题描述:

I am using golang regexp and I want to extract a pattern in a string.

For example, I can have the following name value pairs in the string:

\"name1=val1;name2=val2;needle=haystack;name3=val3\"

I am looking for exactly the string \"needle=haystack\" and discard anything else.

It would be even better if I could just get the result to be exactly haystack.

How do I do this with regexp in golang?

图片转代码服务由CSDN问答提供

感谢您的意见,我们尽快改进~

功能建议

我正在使用golang正则表达式,并且想提取字符串中的模式。</ p>

例如,我可以在字符串中包含以下名称/值对:</ p>

“ name1 = val1; name2 = val2; needle = haystack; name3 = val3” </ p>

我正在精确查找字符串“ needle = haystack”并丢弃其他任何内容。</ p>

如果我能得到准确的结果会更好 草垛。 </ p>

我该如何在golang中使用regexp?</ p>

</ div>

网友观点:

I\'m not entirely clear on what the goal is. If you\'re always looking for needle=haystack then you can use strings.Contains(str, \\\"needle=haystack\\\").

If you really want to do it with regexes then it would be something like the code below.

package main

import (

\\\"fmt\\\"

\\\"regexp\\\"

)

func main() {

str := \\\"name1=val1;name2=val2;needle=haystack;name3=val3\\\"

r := regexp.MustCompile(\\\"needle=([a-z]+);\\\")

found := r.FindString(str)

if found == \\\"\\\" {

fmt.Println(\\\"No match found\\\")

return

}

fmt.Println(found) // needle=haystack;

submatches := r.FindStringSubmatch(str)

fmt.Println(submatches) // [needle=haystack; haystack]

if len(submatches) < 2 {

fmt.Println(\\\"No submatch found\\\")

return

}

fmt.Println(submatches[1]) // haystack

}

正则表达式是怎么匹配字符串的?

这里的星号应该表示零个或任意个吧

标签:

提交需求或反馈

Demand feedback