2011-12-22 38 views
23

Giả sử tôi muốn biểu thức chính quy khớp với cả "Đã gửi từ iPhone của tôi" và "Đã gửi từ iPod của tôi". Làm thế nào để tôi viết một biểu hiện như vậy?Biểu thức chính quy của Python HOẶC

tôi đã cố gắng những thứ như:

re.compile("Sent from my [iPhone]|[iPod]") 

nhưng dường như không làm việc.

+1

vẻ như bạn sẽ được hưởng lợi rất nhiều bằng cách đánh giá các khái niệm cơ bản. Xem: [Python Regular Expression HOWTO] (http://docs.python.org/dev/howto/regex.html) và/hoặc [regular-expressions.info] (http://www.regular-expressions.info/). – ridgerunner

Trả lời

43
re.compile("Sent from my (iPhone|iPod)") 
+21

Hoặc thậm chí "Đã gửi từ iP của tôi (:? Trau dồi | [ao] d)", bao gồm cả iPad. –

+0

Cách này hoạt động? Đầu ra là: Out [25]: ['iPhone'] – lapinkoira

+6

@lapinkoira Đầu ra của cái gì? Bạn có thực sự nghĩ rằng điều này đảm bảo một cuộc bỏ phiếu xuống khi nó hoạt động cho người đã hỏi câu hỏi và những người khác đã tìm thấy câu hỏi đó, nhưng không hoạt động theo cách cụ thể mà bạn đang sử dụng nó không liên quan gì đến câu hỏi gốc ? – Paulpro

15
re.compile("Sent from my (?:iPhone|iPod)") 

Nếu bạn cần phải nắm bắt trận đấu, loại bỏ các ?:.

FYI, regex của bạn không làm việc vì bạn đang thử nghiệm cho một ký tự ra khỏi tôi, P, h, o, n, e hoặc một ký tự ra khỏi tôi, P, o, d ..

+2

Không, họ đang thử nghiệm "Đã gửi từ tôi" và sau đó là một trong các ký tự i, P, h, o, n hoặc e; HOẶC một trong các ký tự i, P, o hoặc d. Thanh dọc cho OR là phạm vi trên cùng và phía bên trái có "Đã gửi từ tôi" trong đó nhưng bên tay phải thì không. – PaulMcG

+0

Đây phải là câu trả lời được chấp nhận – lapinkoira

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