Để bắt đầu, tôi không đề xuất sử dụng "*" trong regexes. Vâng, tôi biết, nó là dấu phân cách đa ký tự được sử dụng nhiều nhất, nhưng nó vẫn là một ý tưởng tồi. Điều này là do, mặc dù nó không khớp với bất kỳ số lần lặp lại nào cho ký tự đó, "any" bao gồm 0, thường là thứ bạn muốn đưa ra lỗi cú pháp, không chấp nhận. Thay vào đó, tôi khuyên bạn nên sử dụng +
dấu hiệu phù hợp với bất kỳ sự lặp lại nào của độ dài> 1. Hơn nữa, từ những gì tôi có thể thấy, bạn đang xử lý các biểu thức được ngoặc đơn có độ dài cố định. Do đó, có lẽ bạn có thể sử dụng {x, y}
cú pháp để chỉ định cụ thể độ dài mong muốn.
Tuy nhiên, nếu bạn thực sự cần sự lặp lại không tham lam, tôi khuyên bạn nên tham khảo ý kiến toàn năng ?
. Điều này, khi được đặt sau khi kết thúc bất kỳ trình xác định lặp lại regex nào, sẽ buộc phần đó của biểu thức chính quy tìm ra số lượng văn bản ít nhất có thể.
Điều đó đã được nói, tôi sẽ rất cẩn thận với ?
nó, như Sonic Tuốc nơ vít trong Dr. Who, có xu hướng làm, tôi nên đặt nó như thế nào, "những thứ không mong muốn" nếu không được hiệu chỉnh cẩn thận. Ví dụ, để sử dụng ví dụ đầu vào của bạn, nó sẽ xác định ((1)
(lưu ý việc thiếu rparen thứ hai) là khớp.