Khái niệm là:Làm thế nào tôi có thể chuyển đổi biểu thức Biểu mẫu Backus – Naur này thành một Regex (.Net)?
N | (1 { A | B | C | D | E1 | E2 | E3 })
Nghĩa là mô tả "N" hoặc một hoặc nhiều trong những mô tả liệt kê mà không lặp lại.
Điều tốt nhất tôi đã có là:
@"^(N|(A|B|C|D|E1|E2|E3){1,})$"
Nhưng điều đó không ngăn cản sự lặp lại.
@"^(N|(A{0,1}B{0,1}...)$"
Điều đó ngăn chặn sự lặp lại nhưng sau đó yêu cầu thứ tự cụ thể cho các thành phần, điều này cũng không thực sự ổn.
Bất kỳ ý tưởng nào?
(Tôi không thực sự chắc chắn rằng biểu thức BNF bản thân không cho phép lặp lại, nhưng đó là những gì tôi cần.)
http://kore-nordmann.de/blog/do_NOT_parse_using_regexp.html Sử dụng cụm từ thông dụng để nhận dạng từ chứ không phải cấu trúc. –
Tôi đoán là có ý nghĩa. Nhưng tôi sẽ sử dụng cái gì để nhận ra cấu trúc này? @DavidBrabant Nó sẽ được sử dụng để xác thực đầu vào của biểu mẫu được đề cập. – Daniel
Hay PCRE là phương pháp mà bạn đang đề xuất? – Daniel