I am trying to parse a string which is of the following format:
text="some random string <inAngle> <anotherInAngle> [-option text] [-anotherOption <text>] [-option (Y|N)]"
I want to split the string in three parts.
If I use the RegEx
re.findall(r'\[(.+?)\]', text)
It gives everything I need within square brackets. If I use the same RegEx with angle brackets however,
re.findall(r'<(.+?)>', text)
It gives the text which is within angle bracket that are within square brackets too. So for example "text" from above which is within [-anotherOption]. I do not want that. The RegEx for angle bracket match should only return "inAngle" "anotherInAngle" from above. What would be the RegEx for it?
Also how do I get only the first part i.e "some random string". This string can have 2 or 3 number of words
Try if this regex would capture what you need
\s*([^><[\]]+\b)|\[([^]]*)]|<([^>]*)>
\s*
preceded by optional whitespace
([^><[\]]+\b)
Group 1: Any non brackets until \b (remove if undesired)|\[([^]]*)]
or Group 2: What's inside square brackets|<([^>]*)>
or Group 3: What's inside angle bracketsSee demo at regex101 (use "code generator" if needed)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With