2014-11-12 17 views
6

Giả sử tôi có một chuỗi nhưThêm khoảng trống giữa hai chữ cái trong một chuỗi trong R

s = "PleaseAddSpacesBetweenTheseWords" 

Làm thế nào để sử dụng gsub trong R thêm khoảng trắng giữa các từ vì vậy mà tôi có được

"Please Add Spaces Between These Words" 

Tôi nên làm một cái gì đó như

gsub("[a-z][A-Z]", ???, s) 

Tôi phải làm gì? Ngoài ra, tôi tìm thấy các tài liệu biểu thức chính quy cho R khó hiểu vì vậy một tài liệu tham khảo hoặc ghi lên các biểu thức thông thường trong R sẽ được nhiều đánh giá cao.

Trả lời

20

Bạn chỉ cần nắm bắt các kết quả phù hợp sau đó sử dụng cú pháp \1 để tham chiếu đến các kết quả phù hợp đã chụp. Ví dụ:

s = "PleaseAddSpacesBetweenTheseWords" 
gsub("([a-z])([A-Z])", "\\1 \\2", s) 
# [1] "Please Add Spaces Between These Words" 

Tất nhiên, điều này chỉ đặt dấu cách giữa mỗi cặp chữ hoa/chữ thường. Nó không biết "từ" thực sự là gì.

+0

Cảm ơn. Có \\ 1 tham chiếu đến chữ cái đầu tiên trong trận đấu, \\ 2 giây, v.v.? Và tại sao các dấu ngoặc cần thiết? – Ben

+1

\\ 1 đề cập đến nội dung phù hợp với bên trong của bộ ngoặc đơn đầu tiên và tương tự \\ 2 đề cập đến tập hợp dấu ngoặc đơn thứ hai. Trong trường hợp này, cả hai parens bao quanh các cụm từ thông dụng khớp với một ký tự đơn. '[a-z]' có nghĩa là khớp với bất kỳ ký tự nào từ a đến z (chữ thường) một lần. – blakeoft

+0

@Ben Google xung quanh cho "regex cheatsheet". Điều đó sẽ cung cấp cho bạn rất nhiều thông tin hữu ích. –

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