Dữ liệu ký tự là gì cho ví dụ năm 2024
Các hàm kết hợp, thiết lập thứ tự, phân tách, sắp xếp - Show
47,
48,
49,
50
Để dễ hiển thị, hầu hết các code ví dụ đều mô phỏng trên một vectơ ngắn dạng ký tự đã được xác định, tuy nhiên chúng có thể dễ dàng áp dụng trên một cột trong bộ dữ liệu. Package stringr vignette đã cung cấp nhiều ý tưởng cho chương này. Chuẩn bịGọi packagesCài đặt hoặc gọi package stringr và các packages tidyverse khác.
Nhập dữ liệuĐể bắt đầu, chúng ta nhập bộ dữ liệu có tên linelist đã làm sạch bao gồm các trường hợp từ vụ dịch Ebola mô phỏng. Để tiện theo dõi, bấm để tải dữ liệu linelist “đã được làm sạch” (dưới dạng tệp .rds). Nhập dữ liệu bằng hàm
67 từ package rio (nó xử lý nhiều loại tệp như .xlsx, .csv, .rds - xem thêm chương để biết thêm chi tiết).
50 hàng đầu tiên của bộ dữ liệu linelist được hiển thị bên dưới. Hợp nhất, tách, và sắp xếpChương này bao gồm:
Kết hợp các chuỗi ký tựĐể kết hợp hoặc nối nhiều chuỗi ký tự thành một chuỗi ký tự, chúng tôi khuyên bạn nên sử dụng hàm
74 từ stringr. Nếu bạn có các giá trị ký tự riêng biệt để kết hợp, đơn giản chỉ cần cung cấp chúng dưới dạng đối số, được phân tách bằng dấu phẩy.
Đối số
75 chèn một giá dạng trị ký tự vào giữa mỗi đối số ký tự bạn cung cấp (ví dụ: chèn dấu phẩy, dấu cách hoặc dòng mới
76)
Đối số
77 có liên quan nếu bạn đang nhập nhiều vectơ làm đối số cho hàm
47. Nó được sử dụng để tách các phần tử của một vectơ kết quả, sao cho vectơ kết quả chỉ là một phần tử chứa ký tự dài. Ví dụ dưới đây cho thấy sự kết hợp của hai vectơ thành một (tên và họ). Một ví dụ tương tự khác có thể là các phạm vi địa chính và số lượng trường hợp. Trong ví dụ này:
`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")`
Lưu ý: Tùy thuộc vào trường hợp hiển thị mong muốn, khi in một chuỗi kết hợp như vậy với các dòng mới, bạn có thể cần phải đặt toàn bộ cụm từ trong hàm
81 để các dòng mới được in đúng cách:
Chuỗi độngSử dụng hàm
48 để chèn đoạn code động của R vào chuỗi ký tự. Đây là một hàm hữu dụng để tạo tiêu đề biểu đồ động, như được mô tả dưới đây:
Một ví dụ đơn giản về tiêu đề biểu đồ động:
0
1 Một định dạng thay thế là sử dụng trình giữ chỗ (placeholder) bên trong dấu ngoặc kép và chỉ định chúng trong các đối số ở phía sau trong hàm
48 như bên dưới. Việc này sẽ làm tăng tính tường minh cho code nếu phần văn bản dài.
2
3 Kéo từ bộ dữ liệu Đôi khi, sẽ rất hữu ích khi lấy dữ liệu từ một bộ dữ liệu và dán chúng lại với nhau theo trình tự. Dưới đây là một ví dụ về bộ dữ liệu. Chúng ta sẽ sử dụng cách này để có một phát biểu tóm tắt về các khu vực pháp lý, cũng như số ca mắc mới và tổng số ca.
4 Sử dụng hàm
90, được thiết kế để lấy dữ liệu từ các quan sát của bộ dữ liệu:
5
6 Kết hợp các chuỗi ký tự trên các dòng Nếu bạn đang cố gắng để “gộp” các giá trị trong một cột của bộ dữ liệu, ví dụ: kết hợp các giá trị từ nhiều hàng thành một hàng bằng cách gắn chúng với nhau cùng ký tự phân cách, hãy xem thêm ở chương mục . Một bộ dữ liệu thành một dòng Bạn có thể tạo ra dãy thông tin chỉ trong một dòng bằng cách sử dụng lệnh
47 (cụ thể tên bộ dữ liệu và tên cột), đồng thời cung cấp các đối số
75 và
77.
7
8 Bạn có thể thêm đoạn tiền tố “New Cases:” vào đầu dòng thông tin bằng cách đặt trong hàm
47 (nếu “New Cases:” nằm trong hàm
47 ban đầu thì nó sẽ xuất hiện nhiều lần).
9
0 Hợp nhất các cộtTrong bộ dữ liệu, việc tập hợp các giá trị dạng ký tự từ nhiều cột lại với nhau có thể thực hiện bằng cách dùng hàm
70 từ package tidyr. Tính năng này ngược lại với hàm
73. Đầu tiên, cần tên của cột mới. Sau đó, cần tên của các cột mà bạn muốn hợp nhất.
Dưới đây, chúng tôi xác định một bộ dữ liệu ngắn để minh họa:
1
2
3 Đây là bộ dữ liệu mẫu: Dưới đây, chúng tôi hợp nhất ba cột triệu chứng:
4
5 Tách chuỗiĐể tách một chuỗi ký tự dựa trên một quy luật, hãy sử dụng hàm
50. Hàm này đánh giá (các) chuỗi ký tự và trả về danh sách
02 các vectơ ký tự chứa các giá trị mới được tách. Ví dụ đơn giản dưới đây đánh giá một chuỗi ký tự và chia nó thành ba phần. Mặc định, hàm trả về một đối tượng kiểu danh sách
02 với một phần tử (một vectơ ký tự) cho mỗi chuỗi được cung cấp ban đầu. Nếu
04 nó trả về một ma trận ký tự. Trong ví dụ này, một chuỗi ký tự được cung cấp và hàm trả về một danh sách có một phần tử - một vectơ ký tự chứa ba giá trị.
6
7 Nếu kết quả được lưu, thì bạn có thể truy cập giá trị phân chia thứ n bằng cú pháp dấu ngoặc vuông. Để truy cập vào một giá trị cụ thể, bạn có thể sử dụng cú pháp như sau:
05, sẽ truy cập giá trị thứ hai từ chuỗi ký tự được đánh giá thứ nhất (“fever”). Xem thêm ở chương để biết thêm chi tiết về cách truy vấn các phần tử.
8
9 Nếu nhiều chuỗi ký tự được sử dụng trong hàm
50, sẽ có nhiều hơn một phần tử trong danh sách trả về.
0
1 Thay vào đó, để trả về “ma trận chuỗi ký tự”, có thể sẽ hữu ích nếu tạo cột trong bộ dữ liệu, đặt đối số
04 như trình bày dưới đây:
2
3 Bạn cũng có thể điều chỉnh số phần tách ra với đối số
08. Ví dụ dưới đây giới hạn số phần tách ra là 2. Bất kỳ dấu phẩy nào khác vẫn sẽ nằm trong giá trị thứ hai.
4
5 Lưu ý - các kết quả tương tự có thể đạt được với hàm
09, trong đó bạn không dùng đối số
10 mà thay vào đó phải chỉ định số cột (
11).
6 Tách cộtNếu bạn đang cố gắng chia tách cột trong bộ dữ liệu, cách tốt nhất là sử dụng hàm
73 từ package dplyr. Nó được sử dụng để chia một cột ký tự thành các cột khác nhau. Giả sử chúng ta có một bộ dữ liệu đơn giản
13 (được xác định và hợp nhất trong ) chứa một cột
14 , một cột dạng ký tự có nhiều triệu chứng và một cột outcome. Mục tiêu của chúng ta là tách cột
15 thành nhiều cột - mỗi cột chứa một triệu chứng. Giả sử dữ liệu được đưa vào hàm
73, trước tiên hãy chọn ra cột sẽ được phân tách. Sau đó, cung cấp thông tin tới đối số
17 dưới dạng vectơ
18 có chứa tên các cột mới, như được trình bày dưới đây.
Dưới đây là một ví dụ về
26 - không có dữ liệu nào bị mất. Hai cột mới được xác định nhưng bất kỳ triệu chứng thứ ba nào sẽ quy về trong cột mới thứ hai:
7
8
9 Khi sử dụng lệnh
25 mặc định như bên dưới, một cảnh báo sẽ được đưa ra nhưng triệu chứng thứ ba bị mất:
0
1
8
3 CẨN TRỌNG: Nếu bạn không cung cấp đủ giá trị
27 cho các cột mới, dữ liệu của bạn có thể bị cắt bớt . Sắp xếp theo thứ tự bảng chữ cáiMột số chuỗi ký tự có thể được sắp xếp theo thứ tự bảng chữ cái. Hàm
49 trả về thứ tự của các phần tử, trong khi hàm
32 trả về các chuỗi theo thứ tự đó.
4
5
6
7 Để sử dụng một bảng chữ cái khác, hãy thêm đối số
33. Xem danh sách đầy đủ các locales bằng cách gõ
34 trong cửa sổ R console. Các hàm base RCác hàm phổ biến của base R là
35 và
36 nối các vectơ sau khi chuyển đổi tất cả các cấu phần thành ký tự. Chúng hoạt động tương tự như
47 nhưng cú pháp được cho là phức tạp hơn - đó là trong ngoặc thì mỗi phần được phân tách bằng một dấu phẩy. Các cấu phần là ký tự dạng văn bản (trong dấu ngoặc kép) hoặc các đối tượng được xác định trước (không có dấu ngoặc kép). Ví dụ:
8
9 Đối số
75 và
77 có thể được cụ thể. Hàm
35 chỉ đơn giản dán
36 vớ đối số mặc định
42 (một khoảng trắng). Làm sạch và chuẩn hóaThay đổi chữ hoa/chữ thườngThông thường thì người ta cần phải thay đổi cách viết thường/viết hoa của một giá trị dạng chuỗi ký tự, ví dụ như tên địa danh. Hãy sử dụng hàm
54,
56, và
55 từ stringr, như dưới đây:
0
1
2
3 Sử dụng base R, bạn cũng có thể thực hiện điều trên với hàm
46,
47. Định dạng tiêu đề Biến đổi chuỗi ký tự sao cho mỗi từ được viết hoa có thể thực hiện được với hàm
55:
4
5 Sử dụng hàm
49 từ package tools để chuyển đổi nhiều kiểu viết in hoa hơn (các từ như “to”, “the” và “of” không cần viết hoa).
6
7 Bạn cũng có thể sử dụng hàm
57, chỉ viết hoa chữ cái đầu tiên của chuỗi ký tự.
8
9 Độ dài chuỗi ký tựSử dụng hàm
51 để thêm các ký tự vào một chuỗi, với độ dài tối thiểu. Mặc định, khoảng trắng sẽ được thêm vào, nhưng bạn cũng có thể chèn các ký tự khác bằng cách sử dụng đối số
52. `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 0 `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 1 `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 2 `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 3 Ví dụ: để chèn thêm số bằng các số 0 ở đầu (chẳng hạn như giờ hoặc phút), bạn có thể chèn số có độ dài tối thiểu là 2 với
53. `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 4 `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 5 `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 6 Cắt chuỗi ký tựHàm
52 thiết lập độ dài tối đa cho mỗi chuỗi ký tự. Nếu một chuỗi vượt quá độ dài này, nó sẽ bị xén (rút ngắn) và kết thúc bằng một dấu ba chấm (…) ám chỉ rằng chuỗi đó chưa hiển thị hết các ký tự. Lưu ý rằng dấu ba chấm được tính toán phụ thuộc vào độ dài. Các ký tự dấu ba chấm có thể được thay đổi bằng đối số
55. Đối số tùy chọn
56 làm rõ vị trí mà dấu ba chấm sẽ xuất hiện trong chuỗi bị cắt ngắn (bên “trái”, “phải” hoặc “giữa”). `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 7 `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 8 Chuẩn hóa độ dàiSử dụng hàm
52 để thiết lập độ dài tối đa, sau đó sử dụng hàm
51 để tăng thêm độ dài cho các chuỗi rất ngắn sao cho bằng độ dài tiêu chuẩn. Trong ví dụ dưới đây, độ dài tối đa là 6 (một ký tự bị cắt giảm), và sau đó một giá trị rất ngắn được đệm thêm để đạt được độ dài chuỗi là 6. `first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke") sep displays between the respective input strings, while collapse displays between the elements producedstr_c(first_names, last_names, sep = " ", collapse = "; ")` 9
0
1
2 Xóa khoảng trắng đầu/cuốiSử dụng hàm
59 để xóa khoảng trắng, dòng mới (
62
63, hoặc
64 vào lệnh để xác định phía nào cần cắt (ví dụ:
65.
3
4 Xóa khoảng trắng lặp lại phía trongSử dụng hàm
66 để loại bỏ các khoảng trắng lặp lại bên trong một chuỗi. Ví dụ, để chuyển đổi khoảng trắng lặp thành khoảng trắng đơn. Điều này cũng sẽ loại bỏ dấu cách, dòng mới hoặc tab ở phía bên ngoài chuỗi như giống như hàm
59.
5
6 Gõ
68,
69 vào cửa sổ R console để biết thêm chi tiết. Gói lại thành đoạn văn bảnSử dụng hàm
53 để gói một đoạn văn bản dài không có cấu trúc thành một đoạn văn có cấu trúc với độ dài các dòng là cố định. Cần xác định độ dài lý tưởng cho mỗi dòng và áp dụng một thuật toán để chèn thêm dòng mới (
7
8 Hàm
81 trong base R có thể xử lý toàn bộ câu lệnh trên để trả kết quả, hiển thị các dòng mới được thêm vào.
9
0 Xử lý theo vị tríTách chuỗi theo vị trí ký tựSử dụng hàm
59 để trả về một phần của chuỗi. Hàm chứa 3 đối số chính là:
Một vài lưu ý về số thứ tự vị trí:
Dưới đây là một số ví dụ được áp dụng cho chuỗi ký tự “pneumonia”:
1
2
3
4
5
6
7
8
9
0 Tách theo vị trí từĐể tách ‘từ’ thứ n, hãy sử dụng hàm
60 cũng thuộc package stringr. Đầu tiên, xác định (các) chuỗi ký tự, sau đó là vị trí từ đầu tiên cần trích xuất và vị trí từ cuối cùng để trích xuất. Mặc định, dấu phân cách giữa các ‘từ’ được giả định là khoảng trắng, trừ khi được chỉ định cách khác bằng đối số
75 (ví dụ:
76 khi các từ được phân tách bằng dấu gạch dưới)
1
2 Thay thế theo vị trí ký tựHàm
59 được ghép nối với toán tử gán (
3
4 Một ví dụ áp dụng cho nhiều chuỗi (ví dụ: một cột). Lưu ý sự mở rộng về độ dài của từ “HIV”.
5
6 Đánh giá độ dài chuỗi
7 Ngoài ra, có thể sử dụng hàm
79 từ base R Quy luật chuỗiNhiều hàm stringr được sử dụng để nhận diện, định vị, trích xuất, khớp, thay thế và phân tách dựa trên một pattern - quy luật được chỉ định. . Nhận diện quy luậtSử dụng hàm
61 như bên dưới để phát hiện sự hiện diện/sự vắng mặt của một quy luật trong chuỗi. Đầu tiên, hãy cung cấp cho chuỗi hoặc vectơ cần tìm tới hàm (
81), sau đó là quy luật tìm kiếm (
82). Lưu ý rằng theo mặc định thì tìm kiếm phân biệt chữ hoa chữ thường!
8
9 Đối số
83 có thể được bao gồm và đặt thành
84 nếu bạn muốn tìm một quy luật KHÔNG xuất hiện.
00
01 Để bỏ qua chữ hoa / chữ thường, hãy đặt pattern trong hàm
85, và bên trong hàm
85 hãy thêm đối số
87 (hoặc viết tắt là
88).
02
9 Khi hàm
61 được áp dụng cho một vectơ ký tự hoặc một cột trong bộ dữ liệu, nó sẽ trả về giá trị TRUE hoặc FALSE cho mỗi giá trị.
04
05 Nếu bạn cần đếm giá trị
84, chỉ cần đơn giản tính tổng bằng hàm
91 kết quả đầu ra. Nó sẽ đếm số lượng giá trị
84.
06
07 Để tìm kiếm bao gồm nhiều cụm từ, hãy nhóm chúng bằng ký tự OR (
82 như được trình bày dưới đây:
08
7 Nếu bạn cần xây dựng một danh sách dài gồm các cụm từ cần tìm kiếm, bạn có thể kết hợp chúng bằng cách sử dụng hàm
47 và
96, sau đó chỉ định nó là một đối tượng dạng ký tự, và sau đó tham chiếu vector một cách ngắn gọn hơn. Ví dụ dưới đây bao gồm các cụm từ tìm kiếm bao gồm các nghề nghiệp có thể sử dụng cho các nhà cung cấp dịch vụ y tế tuyến đầu.
10
11 Lệnh này trả về số lượng nghề nghiệp mà chứa bất kỳ một trong các cụm từ tìm kiếm dành cho nhà cung cấp dịch vụ y tế tuyến đầu (
97):
12
13 Các hàm tìm kiếm chuỗi trong Base R Hàm
98 trong base R hoạt động tương tự như hàm
61, trong đó nó tìm kiếm các kết quả phù hợp với một quy luật và trả về một vectơ logic. Cú pháp cơ bản đó là
00. Một ưu điểm đó là đối số
01 dễ viết hơn (không cần có sự tham gia của hàm
85). Tương tự như vậy, các hàm
03 và
04 của base R hoạt động tương tự như hàm
05. Cú pháp cơ bản đó là:
06.
03 sẽ thay thế trường hợp đầu tiên của pattern, trong khi
04 sẽ thay thế tất cả các trường hợp của pattern. Chuyển đổi dấu phẩy thành dấu chấmSau đây là một ví dụ về việc sử dụng hàm
04 để chuyển đổi dấu phẩy thành dấu chấm trong một vectơ dạng số. Điều này có thể hữu ích nếu dữ liệu của bạn bắt nguồn từ nhiều nơi trên thế giới ngoài Hoa Kỳ hoặc Vương quốc Anh. Hàm
04 ở bên trong đầu tiên hoạt động trên đối tượng
11 để chuyển đổi bất kỳ dấu chấm nào thành không có khoảng trắng ““. Ký tự dấu chấm”.” phải được “đi liền” với hai dấu gạch chéo để biểu thị một dấu chấm, bởi vì “.” trong biểu thức chính quy có nghĩa là “bất kỳ ký tự nào”. Sau đó, kết quả (chỉ có dấu phẩy) được chuyển tiếp đến hàm
04 bên ngoài trong đó dấu phẩy được thay thế bằng dấu chấm.
14 Thay thế toàn bộSử dụng hàm
66 như là một công cụ “find and replace (tìm kiếm và thay thế)”. Đầu tiên, cung cấp các chuỗi ký tự sẽ được đánh giá tới đối số
81, sau đó là quy luật sẽ được thay thế vào đối số
82, và sau đó là giá trị thay thế vào
16. Ví dụ dưới đây thay thế tất cả các trường hợp “dead” bằng “deceased”. Lưu ý, phân biệt chữ hoa chữ thường.
15
16 Lưu ý:
Nhận diện logicBên trong hàm
20
61 thường được sử dụng trong hàm
20 (từ dplyr). Hãy coi
23 là một cột trong bộ linelist. Hàm
24 dưới đây tạo một cột mới gọi là
25 bằng cách sử dụng logic có điều kiện bởi
20. Xem thêm ở chương về làm sạch dữ liệu để hiểu hơn về hàm
20.
17 Xin nhắc lại, điều quan trọng là phải thêm tiêu chí loại trừ vào điều kiện logic (
28):
18 Định vị vị trí patternĐể xác định vị trí đầu tiên của một pattern, hãy sử dụng hàm
29. Nó xuất ra vị trí bắt đầu và kết thúc.
19
20 Giống như các hàm
30 khác, có một phiên bản “_all” (
02.
21
22
23
24 Trích xuất kết quả ghép cặp
33 trả về các patterns được matching, sẽ hữu dụng nhất khi bạn cung cấp một vài patterns thông qua điều kiện “OR”. Ví dụ: tìm trong vectơ chuỗi nghề nghiệp (xem tab trước) các từ “teach”, “prof” hoặc “tutor”.
33 trả về một danh sách
02 chứa tất cả các kết quả ghép cặp cho mỗi chuỗi được đánh giá. Xem dưới đây ta thấy occupation 3 có hai pattern được tìm thấy.
25
26
64 chỉ trích xuất kết quả ghép cặp đầu tiên trong mỗi chuỗi được xem xét, tạo ra một vectơ ký tự với một phần tử cho mỗi chuỗi được xem xét. Nó trả về giá trị
22 khi không có giá trị nào được tìm thấy. Các giá trị
22 có thể được loại bỏ bằng cách đặt vectơ trả về trong hàm
39. Lưu ý đoạn khớp nối thứ hai của occupation 3 không được hiển thị.
27
28 Tập hợp con và số lượngBao gồm hàm
62 và
41.
62 trả về các giá trị thực có chứa pattern:
29
30
41 trả về một vectơ số: số lần một cụm từ tìm kiếm xuất hiện trong mỗi giá trị được xem xét.
31
32 Nhóm RegexĐANG ĐƯỢC XÂY DỰNG Các ký tự đặc biệtDấu gạch chéo ngược
44 để bỏ qua Dấu gạch chéo ngược
44 được sử dụng “để bỏ qua” nghĩa của ký tự tiếp theo. Bằng cách này, dấu gạch chéo ngược có thể được sử dụng để hiển thị dấu ngoặc kép bên trong các dấu ngoặc kép khác (
Lưu ý - do đó, nếu bạn muốn hiển thị một dấu gạch chéo ngược, bạn phải ngắt nghĩa của nó bằng một dấu gạch chéo ngược khác. Vì vậy, bạn phải viết hai dấu gạch chéo ngược
47 để chỉ hiển thị một. Các ký tự đặc biệt Ký tự đặc biệt Ý nghĩa
48 Dấu gạch chéo ngược
76 một dòng mới
50 dấu ngoặc kép trong dấu ngoặc kép
51 dấu ngoặc đơn trong dấu ngoặc đơn
52“
53”
54“
55”
56“` backspace Gõ
57 trong cửa sổ R Console để hiển thị danh sách đầy đủ các ký tự đặc biệt (nó sẽ xuất hiện trong cửa sổ Help của RStudio). Biểu thức chính quy (regex)Regex và các ký tự đặc biệtBiểu thức chính quy, hoặc “regex”, là một ngôn ngữ ngắn gọn để mô tả các patterns trong chuỗi ký tự. Nếu bạn không quen với nó, một biểu thức chính quy có thể trông giống như một ngôn ngữ ngoài hành tinh. Ở đây chúng tôi cố lột tả ngôn ngữ này dễ hiểu hơn Phần lớn nội dung mục này được tham khảo từ hướng dẫn này và cheatsheet này. Chúng tôi tóm tắt một cách chọn lọc ở đây khi biết rằng cuốn ebook này có thể được xem bởi những người không có quyền truy cập internet để có thể xem các hướng dẫn khác. Một biểu thức chính quy thường được áp dụng để trích xuất các pattern cụ thể từ văn bản “không có cấu trúc” - ví dụ: ghi chú y tế, khiếu nại, tiền sử bệnh tật hoặc các cột văn bản khác trong bộ dữ liệu. Có bốn công cụ cơ bản mà người ta có thể sử dụng để tạo một biểu thức chính quy cơ bản:
Bộ ký tự Bộ ký tự, là một cách thể hiện các tùy chọn liệt kê phù hợp với ký tự gốc, trong dấu ngoặc. Vì vậy, mọi kết quả khớp sẽ được đánh dấu nếu tìm thấy bất kỳ ký tự nào trong dấu ngoặc trong chuỗi. Ví dụ, để tìm các nguyên âm, người ta có thể sử dụng bộ ký tự này: “[aeiou]”. Một số bộ ký tự phổ biến khác là: Bộ ký tự Ghép cặp
58 bất kỳ ký tự viết hoa đơn lẻ nào
59 bất kỳ ký tự viết thường đơn lẻ nào
60 bất kỳ số nào
61 bất kỳ ký tự chữ và số nào
62 bất kỳ chữ số nào
63 bất kỳ ký tự nào (viết hoa hoặc viết thường)
64 bất kỳ ký tự viết hoa nào
65 bất kỳ ký tự viết thường nào Các bộ ký tự có thể được kết hợp trong một dấu ngoặc vuông (không có khoảng trắng!), chẳng hạn như
66 (bất kỳ chữ cái viết hoa hoặc viết thường nào), hoặc một ví dụ khác
67 (từ t viết thường đến z HOẶC số 0 đến 5). Siêu ký tự Các siêu ký tự là cách viết tắt của các bộ ký tự. Một số điều quan trọng được liệt kê dưới đây: Siêu ký tự Ý nghĩa
68 khoảng trắng đơn
69 bất kỳ ký tự chữ hoặc số đơn lẻ nào (A-Z, a-z, or 0-9)
70 bất kỳ chữ số đơn lẻ nào (0-9) Bộ định lượng Thông thường, bạn không muốn tìm kiếm kết quả phù hợp chỉ trên một ký tự. Bộ định lượng cho phép bạn chỉ định độ dài của các chữ cái/số để cho phép ghép nối. Bộ định lượng là các số được viết trong dấu ngoặc nhọn
71 sau ký tự mà chúng đang định lượng, ví dụ:
Sử dụng ký hiệu dấu cộng
77 như một bộ định lượng, việc khớp sẽ xảy ra cho tới khi gặp ký tự khác. Ví dụ, biểu thứ này sẽ trả về tất cả các từ (ký tự alpha:
78
33 Khi bộ định lượng {2} được sử dụng, chỉ các cặp chữ A liên tiếp được trả về. Hai cặp được xác định trong
79.
34
35 Khi bộ định lượng {2,4} được sử dụng, các nhóm chữ A liên tiếp có độ dài từ hai đến bốn được trả về.
36
37 Với bộ định lượng
77, các nhóm của một hoặc nhiều hơn được trả về:
38
39 Vị trí tương đối Những biểu thức dưới đây yêu cầu cho những thứ đứng trước hoặc theo sau một mẫu. Ví dụ, để trích xuất câu, “two numbers that are followed by a period” (
81). (?<=\.)\s(?=[A-Z])
40
41 Biểu thức vị trí Khớp với
82 “a” bị đứng trước bởi “b”
83 “a” KHÔNG bị đứng trước bởi “b”
84 “a” được theo sau bởi “b”
85 “a” KHÔNG được theo sau bởi “b” Nhóm Việc bắt các nhóm trong biểu thức chính quy là một cách để kết quả trả về có tổ chức hơn khi trích xuất. Ví dụ về Regex Dưới đây là một văn bản tự do sử dụng làm ví dụ. Chúng ta sẽ cố gắng trích xuất thông tin hữu ích từ nó bằng cách sử dụng cụm từ tìm kiếm theo biểu thức chính quy.
42 Biểu thức sau đây khớp với tất cả các từ (bất kỳ ký tự nào cho đến khi gặp thứ không phải ký tự, chẳng hạn như dấu cách):
43
44 Biểu thức
86 khớp với các số liên tiếp có độ dài 1 hoặc 2 chữ số. Nó cũng có thể được viết là
87, hoặc
88. |