Ví dụ đối sánh lại python
Tôi muốn có thể tìm thấy kết quả trùng khớp thứ hai trong dữ liệu sê-ri bằng cách sử dụng lại. phương pháp tìm kiếm. Cho đến nay tôi đã có thể sử dụng lại. tìm kiếm biểu thức chính quy để tìm trận đấu đầu tiên Nội dung chính Hiển thị
Làm cách nào để tôi tìm kiếm các chữ cái PR và in các chữ số ở bên phải của nó sau khi tìm thấy kết quả khớp đầu tiên trong cùng một chuỗi nối tiếp? Đoạn mã dưới đây hiển thị kết nối với thiết bị thông qua cổng COM. Lưu trữ dữ liệu thành nối tiếp và tìm kiếm các chữ số ở bên phải của từ 'ID' trên cùng một dòng dữ liệu nối tiếp. aassddffggID. 12345qqwwerrttPR. 54321zzxxxcc
Cập nhật Tôi muốn sửa đổi điều này lại. tìm kiếm để cho phép các tham số được chuyển đến ID và PR. Tôi đã có thể chuyển một giá trị cho ID nhưng dường như không thể nhận các giá trị được chuyển cho cả hai mà không gặp lỗi Bit này hoạt động id = 12345 pr = 54321
Ghi chú. Nó không giống như dấu phẩy đảo ngược sau dấu ngoặc nhọn đã đóng sau PR. {} Bất kỳ đề xuất về thay đổi cú pháp? Điều kiện tiên quyết. Python RegEx Bạn có thể quen với việc tìm kiếm văn bản bằng cách nhấn ctrl-F và nhập các từ bạn đang tìm kiếm. Biểu thức chính quy tiến thêm một bước. Chúng cho phép bạn chỉ định một mẫu văn bản để tìm kiếm.
Tạo đối tượng Regex Tất cả các hàm regex trong Python đều có trong mô-đun re import re Để tạo đối tượng Regex khớp với mẫu số điện thoại, hãy nhập thông tin sau vào trình bao tương tác phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d') Bây giờ biến phoneNumRegex chứa một đối tượng Regex Đối sánh các đối tượng regex Phương thức search() của đối tượng Regex tìm kiếm chuỗi mà nó được truyền để tìm bất kỳ kết quả khớp nào với biểu thức chính quy. Các đối tượng khớp có một phương thức group() sẽ trả về văn bản khớp thực tế từ chuỗi đã tìm kiếm Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d4 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d6 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d8 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d9 \d{3}-\d{3}-\d{4}0 \d{3}-\d{3}-\d{4}1 \d{3}-\d{3}-\d{4}2 \d{3}-\d{3}-\d{4}3______27 \d{3}-\d{3}-\d{4}5______36 \d{3}-\d{3}-\d{4}2 \d{3}-\d{3}-\d{4}8 \d{3}-\d{3}-\d{4}9 import re0 import re1 import re2 đầu ra Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 Các bước đối sánh biểu thức chính quy Mặc dù có một số bước để sử dụng biểu thức chính quy trong Python, nhưng mỗi bước đều khá đơn giản
Nhóm với dấu ngoặc đơn Kết hợp nhiều nhóm với đường ống Các. nhân vật được gọi là một đường ống. Bạn có thể sử dụng nó ở bất cứ đâu bạn muốn khớp với một trong nhiều biểu thức. Ví dụ: biểu thức chính quy r'Batman. Tina Fey’ sẽ phù hợp với ‘Batman’ hoặc ‘Tina Fey’ Khi cả Batman và Tina Fey xuất hiện trong chuỗi được tìm kiếm, lần xuất hiện đầu tiên của văn bản phù hợp sẽ được trả về dưới dạng đối tượng Match. Nhập thông tin sau vào vỏ tương tác Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d4 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 16Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d8 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d9 \d{3}-\d{3}-\d{4}0 21\d{3}-\d{3}-\d{4}2 23Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 25____126\d{3}-\d{3}-\d{4}2 \d{3}-\d{3}-\d{4}8 29ĐẦU RA 1Kết hợp các lần lặp lại cụ thể với Dấu ngoặc nhọn Nếu bạn có một nhóm mà bạn muốn lặp lại một số lần cụ thể, hãy theo dõi nhóm trong biểu thức chính quy của bạn với một số trong dấu ngoặc nhọn. Ví dụ: biểu thức chính quy (Ha){3} sẽ khớp với chuỗi 'HaHaHa', nhưng nó sẽ không khớp với 'HaHa', vì chuỗi sau chỉ có hai lần lặp lại của nhóm (Ha) Thay vì một số, bạn có thể chỉ định một phạm vi bằng cách viết giá trị tối thiểu, dấu phẩy và giá trị tối đa vào giữa các dấu ngoặc nhọn. Ví dụ: biểu thức chính quy (Ha){3, 5} sẽ khớp với 'HaHaHa', 'HaHaHaHa' và 'HaHaHaHaHa' Bạn cũng có thể bỏ qua số thứ nhất hoặc số thứ hai trong dấu ngoặc nhọn để không giới hạn số tối thiểu hoặc tối đa. Ví dụ: (Ha){3, } sẽ khớp với ba hoặc nhiều phiên bản của nhóm (Ha), trong khi (Ha){, 5} sẽ khớp từ 0 đến năm phiên bản. Dấu ngoặc nhọn có thể giúp làm cho biểu thức chính quy của bạn ngắn hơn. Hai biểu thức chính quy này khớp với các mẫu giống hệt nhau 2Và hai biểu thức chính quy này cũng khớp với các mẫu giống hệt nhau 3Nhập thông tin sau vào vỏ tương tác Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d4 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 32Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d8 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d9 \d{3}-\d{3}-\d{4}0 37\d{3}-\d{3}-\d{4}2 23Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 41 42\d{3}-\d{3}-\d{4}2 \d{3}-\d{3}-\d{4}8 29ĐẦU RA 4Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d4 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 32Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d8 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d9 \d{3}-\d{3}-\d{4}0 37\d{3}-\d{3}-\d{4}2 55Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 41 58\d{3}-\d{3}-\d{4}2 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 62\d{3}-\d{3}-\d{4}8 64ĐẦU RA 5Ở đây, (Ha){3} khớp với 'HaHaHa' chứ không khớp với 'Ha'. Vì nó không khớp với 'Ha', tìm kiếm () trả về Không có Kết hợp tùy chọn với Dấu chấm hỏi Đôi khi có một mẫu mà bạn chỉ muốn khớp tùy chọn. Đó là, biểu thức chính quy sẽ tìm thấy kết quả phù hợp cho dù có hay không có đoạn văn bản đó. Các ? . Ví dụ: nhập thông tin sau vào trình bao tương tác Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d4 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 67Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d8 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d9 \d{3}-\d{3}-\d{4}0 72\d{3}-\d{3}-\d{4}2 23Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 76 77\d{3}-\d{3}-\d{4}2 \d{3}-\d{3}-\d{4}8 29ĐẦU RA 1Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d4 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d5 67Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d8 Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d9 \d{3}-\d{3}-\d{4}0 72\d{3}-\d{3}-\d{4}2 55Any other string would not match the pattern. \d\d\d-\d\d\d-\d\d\d\d7 76____193\d{3}-\d{3}-\d{4}2 \d{3}-\d{3}-\d{4}8 96ĐẦU RA 7Cái (wo)? . Regex sẽ khớp với văn bản không có phiên bản nào hoặc có một phiên bản wo trong đó. Đây là lý do tại sao regex khớp với cả 'Batwoman' và 'Batman'. |