Tôi có một danh sách các chuỗi. Một số trong số đó có dạng 123-...456
. Phần biến "..." có thể là:Cách khớp, nhưng không chụp, một phần của một regex?
- chuỗi "apple" sau dấu gạch ngang, ví dụ:
123-apple-456
- chuỗi "chuối", theo sau là dấu nối, ví dụ:
123-banana-456
- một chuỗi trống, ví dụ:
123-456
(lưu ý chỉ có một dấu nối)
Bất kỳ từ nào khác ngoài "táo" hoặc "chuối" đều không hợp lệ.
Đối với ba trường hợp này, tôi muốn đối sánh "quả táo", "chuối" và "" tương ứng. Lưu ý rằng tôi không bao giờ muốn chụp dấu gạch nối, nhưng tôi luôn muốn khớp với. Nếu chuỗi không thuộc dạng 123-...456
như được mô tả ở trên, thì không có kết quả nào cả.
Làm cách nào để viết biểu thức chính quy để thực hiện việc này? Giả sử tôi có một hương vị cho phép các nhóm nhìn, nhìn, nhìn chung và không bắt giữ.
Các quan sát quan trọng ở đây là khi bạn có một trong hai "quả táo" hoặc "chuối", bạn cũng phải có dấu nối dấu, nhưng bạn không muốn để phù hợp với nó. Và khi bạn khớp với chuỗi trống, bạn không được có dấu gạch ngang. Một regex mà đóng gói khẳng định này sẽ là một trong những quyền, tôi nghĩ.
Phụ thuộc vào hương vị regex. Bạn đang sử dụng ngôn ngữ lập trình và/hoặc hương vị regex nào? – BoltClock
@BoltClock: Đã thêm một số làm rõ. Cảm ơn vì bạn đã phản hồi. –
Bạn muốn kết hợp mọi thứ trừ dấu gạch ngang? – BrunoLM