我的表达式采用以下格式
(<decimal_no><space><operator><space><decimal_no>)<space><operator><space><decimal_no>)
我试图将表达式(5.0 - 50.0) - 15.0分成两部分(5.0 - 50.0)和字符串的其余部分&#34; - 15.0&#34;进入清单。使用以下R代码,我能够成功地将其分成两部分。
expr = "(5.0 - 50.0) - 15.0"
unlist(strsplit(expr, "(?<=\\))", perl = T))
#output
"(5.0 - 50.0)" " - 15.0"
然而,当字符串模式被更改时,&#34; 15.0 - (5.0 - 50.0)&#34;我想将字符串分成两个元素&#34; 15.0 - &#34;和&#34;(5.0 - 50.0)&#34;。我可以做一个解决方法,但我想知道这可以使用类似于前一个方法(?&lt; = \)的正则表达式完成吗?
expr2 = "15.0 - (5.0 - 50.0)"
unlist(strsplit(expr2, "(\\()", perl = T))
#output
"15.0 - " "5.0 - 50.0)" #extracts the strings but the splitting character is missing
我认为正则表达式(?&lt; = \))意味着在&#34;)&#34;之前获取所有字符。包括&#34;)&#34;。我尝试使用少量变体(?&gt; = \(),(\(&gt; =?),(\(&lt; =?),(\(?\))但没有任何效果。
编辑:示例字符串
"(5.0 - 50.0) - 15.0" -> "(5.0 - 50.0)"," - 15.0"
"15.0 - (5.0 - 50.0)" -> " - 15.0", "(5.0 - 50.0)"
"(43.0 - 85.0) + (18.0 + 84.0)" -> "(43.0 - 85.0)", " + ", "(18.0 + 84.0)"
"((12.0 + 89.0) - 73.0) - (58.0 - 90.0)" -> "(12.0 + 89.0) - 73.0) - " , "(58.0 - 90.0)"