从动态输入中提取字符串,其中字符串的一部分可能不存在。

huangapple go评论79阅读模式
英文:

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 &amp;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 &amp;.

答案1

得分: 2

你可以使用以下正则表达式进行匹配:

^(.*=)(.*?)(&amp;.*)?$

详细解释如下:

  • ^ - 字符串的开头
  • (.*=) - 第一组:匹配任意数量的非换行字符,直到遇到一个等号字符
  • (.*?) - 第二组:匹配任意数量的非换行字符,尽可能少地匹配
  • (&amp;.*)? - 第三组(可选):匹配一个&amp;字符,然后匹配任意数量的非换行字符,尽可能多地匹配
  • $ - 字符串的结尾

你可以在正则表达式演示中查看示例。

英文:

You can use

^(.*=)(.*?)(&amp;.*)?$

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
  • (&amp;.*)? - Group 3 (optional): a &amp; and then any zero or more chars other than line break chars as many as possible
  • $ - end of string.

huangapple
  • 本文由 发表于 2022年10月27日 20:41:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/74222211.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定