英文:
Extract string when from dynamic input where part of the string may not exists
问题
假设我有一个字符串
Abc=cde&efg
这个公式给我三个组
(.*=)(.*)(&.*)
但是如果输入的字符串是动态的,&efg
可能存在也可能不存在。当它不存在时,上述公式将什么都不返回。
我想在 Golang 中使用这个正则表达式,并且希望能够只用一个正则表达式(如果可能的话),而不是用 &
分割字符串。
英文:
Lets assume I have a string
Abc=cde&efg
This formula gives me three groups
(.*=)(.*)(&.*)
But what if input string is dynamic and &efg
may exists or not? <br>
When it doesn't above formula will give me nothing.
I need to use this regex in golang and I would like to do it with one regex (if it is possible) without splitting string with &
.
答案1
得分: 2
你可以使用以下正则表达式进行匹配:
^(.*=)(.*?)(&.*)?$
详细解释如下:
^
- 字符串的开头(.*=)
- 第一组:匹配任意数量的非换行字符,直到遇到一个等号字符(.*?)
- 第二组:匹配任意数量的非换行字符,尽可能少地匹配(&.*)?
- 第三组(可选):匹配一个&
字符,然后匹配任意数量的非换行字符,尽可能多地匹配$
- 字符串的结尾
你可以在正则表达式演示中查看示例。
英文:
You can use
^(.*=)(.*?)(&.*)?$
See the regex demo.
Details:
^
- start of string(.*=)
- Group 1: any zero or more chars other than line break chars as many as possible and then a=
char(.*?)
- Group 2: any zero or more chars other than line break chars as few as possible(&.*)?
- Group 3 (optional): a&
and then any zero or more chars other than line break chars as many as possible$
- end of string.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论