2011-01-07 40 views
13

thể trùng lặp:
Reversing a regular expression in pythonTạo một String phù hợp với một RegEx bằng Python

Tôi nghĩ tôi chạy vào một vấn đề mà có vẻ dễ dàng hơn đó là ... Tôi không quá chắc chắn. Tôi muốn xác định một biểu thức chính quy, và tôi muốn xây dựng một số chuỗi phù hợp với nó.

Có mô-đun nào tôi có thể nhập có chức năng này không? Tốt nhất không phải là phương pháp tiếp cận vũ phu sử dụng re.search hoặc re.match. Phải có một cách thanh lịch hơn để làm điều đó.

+0

xem tại đây: http://stackoverflow.com/questions/492716/reversing-a-regular-expression-in-python – virhilo

Trả lời

17

Tôi đã làm việc trên một thư viện helper ít cho generating random strings with Python

Nó bao gồm một phương pháp, xeger() cho phép bạn tạo ra một chuỗi từ một regex:

>>> import rstr 
>>> rstr.xeger(r'[A-Z]\d[A-Z] \d[A-Z]\d') 
u'M5R 2W4' 

Ngay bây giờ, nó hoạt động với các biểu thức chính quy cơ bản nhất.

1

Đối với một số cụm từ thông dụng, danh sách các chuỗi có thể có thể là vô hạn. Ví dụ:

a* 

bao gồm

a 
aa 
aaa 

vv Vì vậy, không có cách nào để tạo ra tất cả các chuỗi cho một regex nhất định.

+1

Thêm vào điểm này, bất kỳ hàm nào bạn viết để tạo chuỗi tùy ý đều có thể bị kẹt trong vô hạn lặp tại một số * – fredley

+2

asciimoo trỏ đến 'exrex' được thực hiện bằng cách sử dụng máy phát điện. Bằng cách đó bạn có thể dễ dàng kiểm soát đầu ra và kích thước của nó. –

7

Mô-đun exrex thực hiện điều này: https://github.com/asciimoo/exrex.

+0

+1 Hoạt động như một sự quyến rũ! Nó thậm chí cài đặt với 'easy_install' :) –

+5

Than ôi, đó là GPL; bạn không thể sử dụng nó trong phần mềm thương mại mà không làm nhiễm bẩn nó. – JDonner

+1

https://bitbucket.org/leapfrogdevelopment/rstr/ có phương thức 'xeger' và là MIT – fjsj

Các vấn đề liên quan