R에서 정규식을 사용하고 있습니다. 문자형 벡터의 일부 문자열 끝에있는 괄호 안의 내용을 선택하려고합니다. 괄호로 묶인 콘텐츠가 있으면 찾을 수 있지만 괄호가없는 입력에서 괄호로 묶이지 않은 콘텐츠를 제외하지 못했습니다.
예:
> x <- c("DECIMAL", "DECIMAL(14,5)", "RAND(1)")
> gsub("(.*?)(\\(.*\\))", "\\2", x)
[1] "DECIMAL" "(14,5)" "(1)"
출력의 마지막 2 개 요소는 정확하고 첫 번째 요소는 올바르지 않습니다. 내가 원하는
c("", "(14,5)", "(1)")
입력은 괄호로 묶인 내용 앞에 모든 단어 또는 숫자 문자를 포함 할 수 있습니다.
당신이 사용할 수있는
sub("^.*?(\\(.*\\))?$", "\\1", x, perl=TRUE)
regex 데모를 참조하십시오 . 세부 사항 :
^
-문자열 시작.*?
-줄 바꿈 문자 이외의 0 개 이상의 문자 (PCRE 정규식이므로 참조 perl=TRUE
) 가능한 한 적게(\\(.*\\))?
-선택적인 그룹 1 : a (
, 줄 바꿈 문자를 제외한 0 개 이상의 문자, 가능한 한 많이, 그리고 a)
$
-문자열 끝.참고 항목 R 데모 :
x <- c("DECIMAL", "DECIMAL(14,5)", "RAND(1)")
sub("^.*?(\\(.*\\))?$", "\\1", x, perl=TRUE)
## => [1] "" "(14,5)" "(1)"
참고 : perl=TRUE
정규식의 두 부분에 다른 탐욕의 수량자가 있기 때문에이 경우 매우 중요합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다