Tôi đang phát triển một thuật toán để phân tích cú pháp một số trong chuỗi chuỗi ngắn. Các chuỗi này có phần thường xuyên, nhưng có một vài dạng chung khác nhau và một số ngoại lệ. Tôi đang cố gắng xây dựng một tập hợp các regex sẽ xử lý các biểu mẫu và ngoại lệ khác nhau; Tôi sẽ áp dụng chúng cái khác để xem nếu tôi có một trận đấu.Kết hợp một chuỗi con tùy chọn trong một regex
Một trong những hình thức đi một cái gì đó như thế này:
X (Y) Z
đâu:
- X là một số tôi muốn chụp.
- Z là văn bản tĩnh, được xác định trước. về cơ bản là cách tôi xác định xem biểu mẫu cụ thể này có thể áp dụng được hay không.
- Y là một chuỗi có chiều dài và nội dung không xác định, được bao quanh bởi dấu ngoặc đơn.
Ngoài ra: Y là tùy chọn; nó không luôn xuất hiện trong một chuỗi với Z và X. Vì vậy, tôi muốn có thể để trích xuất các số từ tất cả các chuỗi:
- 10 Z
- 20 (foo) Z
- 30 (bar) Z
Ngay bây giờ, tôi có một regex mà sẽ nắm bắt được một đầu tiên:
([0-9]+) +Z
vấn đề của tôi là tôi không biết làm thế nào để xây dựng một regex sẽ khớp với một chuỗi ký tự nếu và chỉ khi chúng được đặt trong dấu ngoặc đơn. Điều này có thể được thực hiện trong một regex không?
Các khoảng trống là tĩnh. Thay thế chúng bằng \ s + –
hoặc đặt một trong số chúng bên trong()? –
Lưu ý rằng nếu regex chụp \ n bằng. hoặc nếu có nhiều phiên bản trên một dòng, điều này sẽ không tham lam: (\ d *) (\ (. *? \))? Z – eyelidlessness