我正在尝试解析以下格式的字符串:
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.
如果我使用正则表达式
re.findall(r'\[(.+?)\]', text)它在方括号内提供了我需要的一切.但是,如果我使用带有尖括号的相同 RegEx,
It gives everything I need within square brackets. If I use the same RegEx with angle brackets however,
re.findall(r'<(.+?)>', text)它给出了尖括号内的文本,也给出了方括号内的文本.例如,上面的文本"位于 [-anotherOption] 内.我不要那个.尖括号匹配的正则表达式应该只从上面返回inAngle"anotherInAngle".它的正则表达式是什么?
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?
另外我如何只获得第一部分,即一些随机字符串".这个字符串可以有 2 或 3 个单词
Also how do I get only the first part i.e "some random string". This string can have 2 or 3 number of words
推荐答案在搜索尖括号中的内容之前,您可以简单地忽略方括号中的所有内容:
You can simply disregard everything between square brackets before searching for things in angle brackets:
interm = re.sub(r'\[(.*?)\]', '', text) re.findall(r'<(.+?)>', interm)输出
['inAngle', 'anotherInAngle']然后为了匹配第一部分,匹配[ 或< 之前的所有内容.如果允许字符串随机将这些符号中的任何一个嵌入到第一部分中,那么这将不起作用:
then for matching the first part, match everything up to [ or <. Granted this wont work if a string is allowed to randomly have either of these symbols unclosed embedded in the first part:
re.findall(r'([^<\[]+)', text)[0]输出
some random string更多推荐
Python RegEx 用于括号的精确匹配
发布评论