在分割点之前和之后提取文本,包括R中的分割字符

时间:2017-12-11 19:10:43

标签: r regex string

我的表达式采用以下格式

(<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)"

0 个答案:

没有答案