1

there is the regexp expression :

302\=.+?190\=(\d|\.)+|` 

and this is the string be matched:

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|188=88.751|190=88.801|10=022|

the result should be:

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|188=88.751|190=88.801

be it return results with some empty strings:

[]string{"",
       "",
       "",
       "",
       "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|188=88.751|190=88.801",
       "",
       "",
       "",
       "",
       ""
       ....
}

the code is below:

string := `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|188=88.751|190=88.801|10=022|`
re := regexp.MustCompile(`302\=.+?190\=(\d|\.)+|`)
re.FindAllString(a1, -1)

you can try it on: https://play.golang.org/p/0x_lBAX6Vk

Moon soon
  • 2,616
  • 2
  • 30
  • 51

1 Answers1

2

That's because of the trailing |.

xxx| expression means - xxx OR an empty string.

You should escape it so that it was treated literally: \|.

zerkms
  • 249,484
  • 69
  • 436
  • 539