2013-02-08 29 views
8

Python cung cấp một lá cờ (re.X or re.VERBOSE) để cho phép chú thích của biểu thức thông thường:python re.X vs automagic tiếp tục dòng

a = re.compile(r"""\d + # the integral part 
        \. # the decimal point 
        \d * # some fractional digits""", re.X) 

Tuy nhiên, với nối chuỗi tự động, bạn có thể đạt được về cơ bản cùng một điều:

a = re.compile(r'\d+' # integral part 
       r'\.' # decimal point 
       r'\d*' # optional fractional digits 
      ) 

Tôi không nghĩ rằng tôi đã thực sự nhìn thấy hình thức sau được sử dụng, nhưng (IMHO) nó làm cho dễ dàng hơn để đọc regex (tôi không cần phải tìm ra những khoảng trắng đã được thoát, và những khoảng trống nào bị bỏ qua ... v.v.) và nhận xét của tôi nhận được được định dạng bởi trình soạn thảo văn bản của tôi dưới dạng nhận xét. Có lý do nào để thích cái cũ hơn hay câu thị thực? Hay đây thực sự là một vấn đề cà chua-cà chua?

Trả lời

4

Tài liệu cũ có thể được đặt trong tệp văn bản của riêng nó và sau đó được tải mà không cần đến khu nghỉ mát literal_eval. Với REs phức tạp (hoặc một sự lựa chọn của nhiều REs khác nhau), đó có thể là một lợi ích.

3

Tôi muốn nói đó là cà chua-tomahto. Cờ biểu thức chính quy "x" không độc quyền đối với python và có thể có ý nghĩa hơn trong các ngôn ngữ mà thao tác ghép nối dài hơn (tưởng tượng + ở mọi nơi thêm vào tiếng ồn). Tôi cũng xem xét thực tế là nó thực thi bạn để chỉ ra khoảng trống nào là một phần của biểu thức như là một điều tích cực vì nó loại bỏ bất kỳ sự mơ hồ và làm cho nó khó bỏ lỡ quirks trong regexen phụ thuộc vào khoảng trắng.

Một đối số cuối cùng là bạn có thể sao chép mẫu chính xác sang ngôn ngữ khác có cùng cờ và nó sẽ hoạt động mà không cần nỗ lực nhiều. Trong trường hợp sau, tôi phải xóa rất nhiều r s và dấu nháy đơn.


Bởi theo cách bạn luôn có thể nối với tùy chọn re.X.

+0

Vâng - Tôi không nhận ra rằng các ngôn ngữ khác có tính năng này - tôi cho rằng đó là nơi duy nhất tôi sử dụng 'regex' với python, biểu thức sed đơn giản và thỉnh thoảng thêm vào các biểu tượng emac của tôi bảng cú pháp. Đó là một điểm hay. – mgilson

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