Sử dụng biểu thức chính quy

Swift:
Sử dụng biểu thức chính quy

Làm thế nào:

Trong Swift, bạn sử dụng lớp NSRegularExpression để xử lý regex. Bạn xác định một mẫu, tạo một đối tượng regex, và sau đó sử dụng nó để tìm kiếm hoặc thay thế văn bản. Dưới đây là một ví dụ cơ bản:

import Foundation

let input = "Call me at 555-1234 or 555-5678."
let pattern = "\\d{3}-\\d{4}" // Khớp với mẫu như 555-1234

do {
    let regex = try NSRegularExpression(pattern: pattern)
    let matches = regex.matches(in: input, range: NSRange(input.startIndex..., in: input))
    
    for match in matches {
        if let range = Range(match.range, in: input) {
            let phoneNumber = String(input[range])
            print("Đã tìm thấy số điện thoại: \(phoneNumber)")
        }
    }
} catch {
    print("Lỗi Regex: \(error.localizedDescription)")
}

Kết quả mẫu:

Đã tìm thấy số điện thoại: 555-1234
Đã tìm thấy số điện thoại: 555-5678

Sâu hơn

Regex đã tồn tại từ những năm 1950, xuất phát từ lý thuyết ngôn ngữ hình thức và trở nên phổ biến trong các công cụ Unix. Trong Swift, chúng ta sử dụng lớp NSRegularExpression kế thừa từ Objective-C, dựa vào thư viện ICU để hỗ trợ Unicode.

Các phương án thay thế cho regex trong Swift bao gồm sử dụng các phương thức contains, split, hoặc range(of:) của String cho các trường hợp đơn giản. Đối với việc khớp mẫu phức tạp hơn, Swift không cung cấp các phương án thay thế có sẵn cho regex.

Khi triển khai regex, điều quan trọng là tối ưu hóa mẫu để tránh việc tìm kiếm chậm, đặc biệt là với các văn bản lớn. Ngoài ra, hãy nhớ rằng các thao tác regex có thể gây ra ngoại lệ, vì vậy luôn xử lý chúng với các khối try-catch.

Xem thêm