我正在尝试进行一些MATLAB到R的转换,而现有的脚本到目前为止还没弄清楚我。缺少的一件事是矩阵的处理。
我想使用Perl来:
bbox = [minX maxX minY maxY minZ maxZ]
至:
bbox <- c(minX,maxX,minY,maxY,minZ,maxZ)
更换=
用<-
,而且[]
用()
很容易,但对空间的全局查找/替换以逗号将无法正常工作。
如何将操作限制在方括号之间?
这是一种仅替换括号内空格的方法:
> tmp <- "bbox = [minX maxX minY maxY minZ maxZ]"
>
> gsub(" +(?=[^\\[]+\\])", ',', tmp, perl=TRUE)
[1] "bbox = [minX,maxX,minY,maxY,minZ,maxZ]"
这使用Perl预读语法表示匹配1个或多个空格,但前提是后面跟有1个或多个字符(而不是[
后跟a)]
。由于前瞻部分失败,因此第一个[
或之后的空格]
将不匹配。
这将替换[
第一个变量名和第一个变量名之间的空格,或者如果最后一个变量名和之间有多个空格]
:
> tmp <- "bbox = [ minX maxX minY maxY minZ maxZ ]"
> gsub(" +(?=[^\\[]+\\])", ',', tmp, perl=TRUE)
[1] "bbox = [,minX,maxX,minY,maxY,minZ,maxZ, ]"
但是,如果这是一个问题,则可以修改正则表达式:
> tmp <- "bbox = [ minX maxX minY maxY minZ maxZ ]"
>
> gsub("(?<![\\[ ]) +(?=[^ ])(?=[^\\[]+\\])", ',', tmp, perl=TRUE)
[1] "bbox = [ minX,maxX,minY,maxY,minZ,maxZ ]"
现在,匹配的空格不能紧跟在[
或之前,而必须在它们之后至少有一个none。
这种做法的正则表达式引擎会比之间的区域[
,并]
几次,所以可能会比拉出托架之间的部分,做的只是部分替代其他人的建议慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句