2013-03-27 2 views
1

를 사용하여 일치하는 변수를 사용하여 표현식에서 반복되는 양을 지정할 필요가 없습니다.문자의 수를 지정 내가 문자열의 일부를 추출하기 위해 다음 식을 사용하고 변수

^[a-zA-Z]{2} 

var <- 2 

part <- sub("(^[a-zA-Z]{var}).*$", "\\1", "My String", perl = T) 

^[a-zA-Z]{var} 

"My String" 

대신 내가 그렇게 VAR과 같이 읽을 수있는이 표현을 조정할 수있는 방법

"My" 

산출 대신 2 "var"? 어떤 도움을 주시면 감사하겠습니다.

답변

1

이것에 대한 sprintf. 예를 들어 var이 숫자가 아닌 경우 오류가 발생합니다.

var <- 2 
pat <- "(^[a-zA-Z]{%d}).*$" 
pat <- sprintf(pat, var) 
+0

고마워요! 이것은 나를 위해 잘 작동했습니다. – masat

1

당신은이 작업을 수행 할 수 있습니다 :

part <- sub(paste(sep="","(^[a-zA-Z]{",var,"}).*$"), "\\1", "My String", perl=T) 
+0

신속한 답변을 부탁드립니다. 어쩌면 내가 누락되었지만 작동하지 않을 수 있습니다. 페이스트 (」(^ [A-ZA-Z { "VAR"}). * $ ") 복귀 페이스트 (」(^ [A-ZA-Z] {2}). * $ ") {2} – masat

+0

@ user1913361에 공백이 있음을 메모하십시오. 죄송합니다.'sep =" "'를 추가해야합니다. –

0

우리가 다음 우리가 대체 할 수있는 변수를 참조 할 $var를 사용할 수있는 gsubfn 패키지에서 fn$으로 명령 서문 경우

library(gsubfn) 
var <- 2 
fn$sub("(^[a-zA-Z]{$var}).*$", "\\1", "My String") 

동일한 패키지에서 strapplyc을 사용하면 정규식을 단순화 할 수 있습니다.

나는이 그냥 예와 진짜 문제는 더 복잡하지만, 이것은 진짜 문제는 다음 경우는 쉽게 그냥 사용하기 충분 수 있습니다 가정 substring : 내가 사용하고자

var <- 2 
substring("My String", 1, var) 
+0

감사! 이것은 너무 잘 작동했습니다. gsubfn 라이브러리를 자세히 살펴 보겠습니다. – masat