gsub("(?<![0-9])0+", "", c("005", "0AB", "000", "0"), perl = TRUE)
#> [1] "5" "AB" "" ""
gsub("(^|[^0-9])0+", "\\1", c("005", "0AB", "000", "0"), perl = TRUE)
#> [1] "5" "AB" "" ""
위의 정규식 은이 SO 스레드 에서 R의 문자열에서 모든 선행 0 을 제거하는 방법을 설명합니다. 이 정규식의 결과로 "000"과 "0"은 모두 ""로 변환됩니다. 대신 최종 문자가 0이거나 유일한 문자가 0 인 경우를 제외하고 문자열에서 모든 선행 0을 제거하고 싶습니다.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
이 다른 SO 스레드 는 내가 원하는 것을 수행하는 방법을 설명하지만 R에 솔루션을 적용하여 구문이 상당히 정확하다고 생각하지 않습니다. 그리고 아래의 첫 번째 솔루션과 두 번째 솔루션의 차이점을 실제로 이해하지 못합니다 ( 그들이 실제로 효과가 있다면).
gsub("s/^0*(\d+)$/$1/;", "", c("005", "0AB", "000", "0"), perl = TRUE) # 1st solution
# Error: '\d' is an unrecognized escape in character string starting ""s/^0*(\d"
gsub("s/0*(\d+)/$1/;", "", c("005", "0AB", "000", "0"), perl = TRUE) # 2nd solution
# Error: '\d' is an unrecognized escape in character string starting ""s/0*(\d"
내가 원하는 것을 얻는 R의 올바른 정규식은 무엇입니까?
regex
멍청한 놈. 당신의 패턴이 하나 사이의 성능 차이 (또는 다른 환경 설정) 기능^0*(.+)$
또는^0+(.+)$
?