use*_*093 5 python regex string
我正在尝试解析以下格式的字符串:
text="some random string <inAngle> <anotherInAngle> [-option text] [-anotherOption <text>] [-option (Y|N)]"
Run Code Online (Sandbox Code Playgroud)
我想将字符串分成三部分。
如果我使用正则表达式
re.findall(r'\[(.+?)\]', text)
Run Code Online (Sandbox Code Playgroud)
它在方括号内提供了我需要的一切。但是,如果我使用带有尖括号的相同 RegEx,
re.findall(r'<(.+?)>', text)
Run Code Online (Sandbox Code Playgroud)
它给出了在方括号内的尖括号内的文本。例如,上面的“文本”位于 [-anotherOption] 内。我不要那个。尖括号匹配的正则表达式应该只从上面返回“inAngle”“anotherInAngle”。它的正则表达式是什么?
另外我如何只获得第一部分,即“一些随机字符串”。此字符串可以有 2 或 3 个单词
在搜索尖括号中的内容之前,您可以简单地忽略方括号之间的所有内容:
interm = re.sub(r'\[(.*?)\]', '', text)
re.findall(r'<(.+?)>', interm)
Run Code Online (Sandbox Code Playgroud)
输出
['inAngle', 'anotherInAngle']
Run Code Online (Sandbox Code Playgroud)
然后为了匹配第一部分,匹配[或之前的所有内容<。当然,如果允许字符串在第一部分中随机嵌入这些未闭合的符号中的任何一个,那么这将不起作用:
re.findall(r'([^<\[]+)', text)[0]
Run Code Online (Sandbox Code Playgroud)
输出
some random string
Run Code Online (Sandbox Code Playgroud)