2017-11-30 59 views
7

Tôi muốn thay thế mọi ký tự đơn lẻ trong một chuỗi khớp với một mẫu nhất định. Hãy theo chuỗi sauThay thế mỗi ký tự đơn phù hợp với mẫu regex

mystring <- c("000450") 

Tôi muốn đối sánh tất cả các số không với phần tử đầu tiên khác không. Tôi đã thử một số nội dung như

gsub("^0[^1-9]*", "x", mystring) 
[1] "x450" 

Biểu thức này thay thế tất cả các số 0 đứng đầu bằng một đơn x. Nhưng thay vào đó, tôi muốn thay thế tất cả ba số 0 hàng đầu bằng xxx. Kết quả được ưu tiên sẽ là

[1] "xxx450" 

Có ai có thể giúp tôi không?

Trả lời

9

Bạn có thể sử dụng

mystring <- c("000450") 
gsub("\\G0", "x", mystring, perl=TRUE) 
## => [1] "xxx450" 

Xem regex demo và một R demo

Các \\G0 regex phù hợp 0 vào lúc bắt đầu của chuỗi, và bất kỳ 0 mà chỉ xuất hiện sau khi một trận đấu thành công.

Chi tiết

  • \G - một neo phù hợp ("khẳng định") vị trí vào lúc bắt đầu của chuỗi hoặc ngay sau khi một trận đấu thành công
  • 0 - một char 0.
+0

Tuyệt vời, hoạt động tốt! Tại sao bạn phải đặt 'perl = TRUE'? – RudiSophieson

+1

@RudiSophieson '\ G' neo là [không được hỗ trợ] (https://ideone.com/wCh7yJ) bởi mặc định TRE regex falvor. –

Các vấn đề liên quan