R:在大括号之间获取字符串{}

时间:2016-07-25 05:27:52

标签: r string

已更新 我需要在大括号{}之间获取字符。

例如,

a <- "{a,b}->{v}"

输出: a,bv

6 个答案:

答案 0 :(得分:2)

很抱歉,我正在回答我自己的问题,但

public static void main(String args[]) throws IOException{

      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();            

      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

      //get the desired slide layout 
      XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);

      //creating a slide with title layout
      XSLFSlide slide1 = ppt.createSlide(titleLayout);

      //selecting the place holder in it 
      XSLFTextShape title1 = slide1.getPlaceholder(0); 

显然,对于大括号和括号,我们必须将其放在j <- "{a,b}->{v}" unlist(strsplit(j, split="[{}]"))

答案 1 :(得分:2)

如果您需要在花括号中的字符串之间匹配字符串,但不包括花括号,则可以使用

a <- "{a,b}->{v}"
stringr::str_extract_all(a, "(?<=\\{)[^{}]+(?=\\})")           # With stringr library
# => [1] "a,b" "v"
regmatches(a, gregexpr("(?<=\\{)[^{}]+(?=\\})", a, perl=TRUE)) # Base R approach #1
# => [1] "a,b" "v"
regmatches(a, gregexpr("\\{\\K[^{}]+(?=\\})", a, perl=TRUE))   # Base R approach #2
# => [1] "a,b" "v"

请参见regex #1 demo。详细信息:

要匹配非嵌套花括号(包括花括号)中的字符串,可以使用

a <- "{a,b}->{v}"
stringr::str_extract_all(a, "\\{[^{}]*\\}")  # With stringr library
regmatches(a, gregexpr("\\{[^{}]*}", a))     # Base R approach
# => [1] "{a,b}" "{v}" 

请参见regex

此处,\{[^{}]*\}匹配所有以{开头的子字符串,然后匹配除{}之外的0+个字符(带有[^{}]*),然后以结尾}

请参见R demo online

答案 2 :(得分:1)

您可以使用 stingr的 str_extract_all

在下面的表达式中,(?<=\\{)用于查找大括号,(?=\\})用于检测封闭的括号,.+?用于提取中间的括号。因此,最终表达式将变为(?<=\\{).+?(?=\\})

这将返回一个list()

str_extract_all(a, "(?<=\\{).+?(?=\\})")[[1]]

请遵循我执行的另一个示例:

> a <- "{a,b}->{v}{d}{c}{67}"
> str_extract_all(a, "(?<=\\{).+?(?=\\})")[[1]]
[1] "a,b" "v"   "d"   "c"   "67" 

答案 3 :(得分:0)

下面是代码

[NSURLSession sharedSession].configuration.URLCredentialStorage

答案 4 :(得分:0)

这是我的解决方法

library(stringr)

a <- "{a,b}->{v}"

betw_curly <- function(a) { 
  str_sub(a, 
     str_locate_all(a, '\\{')[[1]][,1]+1, 
     str_locate_all(a, '\\}')[[1]][,1]-1)
}

betw_curly(a)

[1]“ a,b”“ v”

答案 5 :(得分:0)

函数tools::delimMatch()就是为此目的而设计的。

tx <- '\\caption{Groups are \\code{ctl} and \\code{trt}}.\label{fig:gps}'
tools::delimMatch(tx, delim = c("{", "}"))
## [1] 9
## attr(,"match.length")
## [1] 38
substring(tx,9,9+38-1)
## "{Groups are \\code{ctl} and \\code{trt}}"

请注意,没有捕获到第二个匹配项({fig:gps})。