Để nhấn mạnh, tôi không muốn "phân tích bằng cách sử dụng regex" - Tôi muốn "phân tích cú pháp một regex thành một cây biểu tượng." (Tìm kiếm chỉ đưa lên trước đây ...)Thư viện Python phân tích cú pháp regex thành AST?
Trường hợp sử dụng của tôi: để tăng tốc tìm kiếm regex trên cơ sở dữ liệu, tôi muốn phân tích cú pháp regex như (foo|bar)baz+(bat)*
và kéo tất cả các chất nền PHẢI xuất hiện trong trận đấu. (Trong trường hợp này, nó chỉ là baz
vì foo/bar là xen kẽ và dơi có thể xuất hiện 0 lần.)
Để làm điều này, tôi cần một số hiểu biết về toán tử/ngữ nghĩa regex. re.DEBUG
đến gần nhất:
In [7]: re.compile('(foo|bar)baz+(bat)', re.DEBUG)
subpattern 1
branch
literal 102
literal 111
literal 111
or
literal 98
literal 97
literal 114
literal 98
literal 97
max_repeat 1 4294967295
literal 122
subpattern 2
literal 98
literal 97
literal 116
Tuy nhiên, nó chỉ in ra và triển khai c không bảo toàn cấu trúc sau đó. Bất kỳ ý tưởng về cách tôi có thể phân tích cú pháp này ra mà không cần viết trình phân tích cú pháp chủ sở hữu của tôi?
cách sử dụng regex trên regeg mẫu? – Netwave
@DanielSanchez Bạn không thể phân tích cú pháp cụm từ thông dụng bằng cụm từ thông dụng. – BlackJack
@BlackJack, bạn có thể regex chuỗi regex, tôi có nghĩa là nếu tôi có "1 | 2" cho regex y của tôi có thể regex chuỗi đó. – Netwave