2013-10-24 15 views
9

Cho phép nói rằng tôi có chuỗi "Xin chào". Tôi muốn xem liệu chuỗi này có chứa một khoảng thời gian không:Grepl cho thời gian trong R?

text <- "Hello." 
results <- grepl(".",text) 

Điều này trả về kết quả là TRUE, nhưng cũng sẽ trả về kết quả là "Hello". Tôi vô cùng bối rối, tôi không thể tìm thấy bất cứ điều gì về điều này trong tài liệu và nó chỉ làm điều này trong thời gian này.

Bất kỳ ý tưởng nào?

Cảm ơn!

+6

' 'là * bất kỳ ký tự * "". *** Bất cứ điều gì ***. Bạn có nghĩa là '" \\. "'. –

+5

Au contraire! Tài liệu dành một lượng thời gian rất lớn mô tả cách 'grepl' sử dụng các biểu thức chính quy, trong đó' .' là một ký tự đặc biệt. Thậm chí còn có liên kết trong tài liệu cho các phần trên biểu thức chính quy và nhiều cuộc thảo luận về cách cài đặt 'fixed = TRUE' sẽ thực hiện đối sánh chính xác, không sử dụng cụm từ thông dụng. – joran

+0

Phát ngay. @ joran, tôi sẽ cần phải chải qua nó, bởi vì tôi không nhìn thấy nó trong Pattern Matchin và văn bản thay thế. – marc

Trả lời

15

Xem sự khác biệt với những ví dụ

> grepl("\\.", "Hello.") 
[1] TRUE 
> grepl("\\.", "Hello") 
[1] FALSE 

các . nghĩa bất cứ điều gì như đã chỉ ra bởi SimonO101, nếu bạn muốn tìm kiếm một rõ ràng . sau đó bạn phải bỏ qua nó bằng cách sử dụng \\. có nghĩa là tìm kiếm một .

Tài liệu R rộng rãi trên biểu thức chính quy, bạn cũng có thể xem this link để hiểu cách sử dụng dấu chấm.

9

tôi sử dụng cách tiếp cận Jilber của thường nhưng đây là hai cách khác:

> grepl("[.]", "Hello.") 
[1] TRUE 
> grepl("[.]", "Hello") 
[1] FALSE 

> grepl(".", "Hello.", fixed = TRUE) 
[1] TRUE 
> grepl(".", "Hello", fixed = TRUE) 
[1] FALSE 
Các vấn đề liên quan