Tôi đang gặp một chút rắc rối khi nhận được một regex Python hoạt động khi khớp với văn bản mở rộng nhiều dòng. Các văn bản ví dụ là ('\ n' là một dòng mới)Cụm từ thông dụng khớp với khối văn bản nhiều dòng
some Varying TEXT\n
\n
DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n
[more of the above, ending with a newline]\n
[yep, there is a variable number of lines here]\n
\n
(repeat the above a few hundred times).
Tôi muốn chụp hai điều: phần 'some_Varying_TEXT', và tất cả các dòng văn bản chữ hoa mà đến hai dòng dưới nó trong một lần chụp (tôi có thể loại bỏ các ký tự dòng mới sau). Tôi đã thử với một vài phương pháp:
re.compile(r"^>(\w+)$$([.$]+)^$", re.MULTILINE) # try to capture both parts
re.compile(r"(^[^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # just textlines
và rất nhiều biến thể của Quy chế này không có may mắn. Người cuối cùng dường như phù hợp với từng dòng văn bản, đó không phải là những gì tôi thực sự muốn. Tôi có thể nắm bắt phần đầu tiên, không vấn đề gì, nhưng tôi dường như không thể bắt được 4-5 dòng chữ hoa văn. Tôi muốn match.group (1) thành một số _ Thay đổi _ Văn bản và nhóm (2) thành line1 + line2 + line3 + etc cho đến khi gặp phải dòng trống.
Nếu ai đó tò mò, nó được coi là một chuỗi các amino acid tạo thành một protein.
Có gì khác trong tệp bên cạnh dòng đầu tiên và văn bản chữ hoa không? Tôi không chắc chắn lý do tại sao bạn sẽ sử dụng regex thay vì tách tất cả văn bản ở ký tự dòng mới và lấy phần tử đầu tiên là "some_Varying_TEXT". – UncleZeiv
có, regex là công cụ sai cho việc này. – hop
Văn bản mẫu của bạn không có ký tự '>' hàng đầu. Phải không? – MiniQuark