Regex to get particular block inside braces

Viewed 84

String: abc-1/1/0/E1 : name=abc-1/1/0/E1, kl/admin=up,kl/admin=up, kl/admin=[1, 2, 3]

I need to match: kl/admin=[1, 2, 3]

I have used ,.*?=\[.*\]

But it is not working.

2 Answers

You may use

[^\s,=]+=\[[^][]*]

See the regex demo

Details

  • [^\s,=]+ - one or more chars other than a comma, whitespace or =
  • = - a = char
  • \[[^][]*] - [, then any 0 or more chars other than [ and ] and then a ].

Python demo:

import re
rx = r"[^\s,=]+=\[[^][]*]"
s = "abc-1/1/0/E1 : name=abc-1/1/0/E1, kl/admin=up,kl/admin=up, kl/admin=[1, 2, 3]"
m = re.search(rx, s)
if m:
  print( m.group() ) # => kl/admin=[1, 2, 3]

Please check below code:

import re
regexExp = r"kl\/admin=(\[.*\]).*"
string = "abc-1/1/0/E1 : name=abc-1/1/0/E1, kl/admin=up,kl/admin=up, kl/admin=[1, 2, 3]"
matchValues = re.findall(regexExp, string)
if matchValues:
  print(matchValues) 

Please check online

Related