我一直在尝试使用 PCRE 中的正则表达式从以下字符串中获取单独的组:
drop = blah blah blah something keep = bar foo nlah aaaa rename = (a=b d=e) obs=4 where = (foo > 45 and bar == 35)
我试图做的小组是这样的:
1. drop = blah blah blah something
2. keep = bar foo nlah aaaa
3. rename = (a=b d=e)
4. obs=4
5. where = (foo > 45 and bar == 35)
我已经使用递归编写了一个正则表达式,但由于某种原因,递归在选择多个单词之后部分起作用,drop
就像它只选择前 3 个单词(blah blah blah)而不是第 4 个单词。我查看了各种 stackoverflow 问题,并尝试过使用积极的前瞻,但这是我能达到的最接近的,现在我被卡住了,因为我无法理解我做错了什么。
我写的正则表达式:(?i)(drop|keep|where|rename|obs)\s*=\s*((\w+|\d+)(\s+\w+)(?4)|(\((.*?)\)))
同样可以在这里看到:RegEx Demo。
感谢您对此提供任何帮助或了解我做错了什么。