Tôi có một chuỗi rất dài cần phân tích theo nhóm nhưng cần kiểm soát nhiều hơn.
import re
RAW_Data = "Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này* ((Bla Bla Bla (Bla Bla) A40 & A41)) Đặt tên Kiểm tra nhiều từ với 3456 số và nội dung này2* ((Bla Bla Bla (Bla Bla) A42 & A43)) Kiểm tra tên nhiều từ với 78910 số và nội dung này3* ((Bla Bla Bla (Bla Bla) A44 & A45)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này4* ((Bla Bla Bla (Bla Bla) A46 & A47)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này5* ((Bla Bla Bla (Bla Bla) A48 & A49)) Kiểm tra tên nhiều từ với 1234 số và nội dung này6* ((Bla Bla Bla (Bla Bla) A50 & A51)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này7* ((Bla Bla Bla (Bla Bla) A52 & A53)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này8* ((Bla Bla Bla (Bla Bla) A54 & A55)) Kiểm tra tên nhiều từ với 1234 số và nội dung này9* ((Bla Bla Bla (Bla Bla) A56 & A57)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này10* ((Bla Bla Bla (Bla Bla) A58 & A59)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này11* ((Bla Bla Bla (Bla Bla) A60 & A61)) Kiểm tra tên nhiều từ với 1234 số và nội dung này12* ((Bla Bla Bla (Bla Bla) A62 & A63)) Kiểm tra tên nhiều từ với 1234 số và nội dung này13* ((Bla Bla Bla (Bla Bla) A64 & A65)) Kiểm tra tên nhiều từ với 1234 số và nội dung này14* ((Bla Bla Bla (Bla Bla) A66 & A67)) Kiểm tra tên nhiều từ với 1234 số và nội dung này15* ((Bla Bla Bla (Bla Bla) A68 & A69)) Kiểm tra tên nhiều từ với 1234 số và nội dung này16*"
fromnode = re.findall('(.*?)(?=\*\s)', RAW_Data)
in từ nút
del fromnode
del RAW_Data
Kết quả là: 'Kiểm tra tên nhiều từ với 1234 số và thứ này', '', '((Bla Bla Bla (Bla Bla) A40 & A41)) Kiểm tra tên nhiều từ với 3456 số và thứ này 2' .......... và vân vân.
Tôi dường như không thể chỉ bắt được các chuỗi như "Đặt tên cho bài kiểm tra nhiều từ với 3456 số và nội dung này" và bỏ qua tất cả các chuỗi như "((Bla Bla Bla (Bla Bla) A40 & A41))". Bất kỳ trợ giúp sẽ được đánh giá rất cao.
bạn có thể chia
r'\*\s*\({2}.*?\){2}\s*'
người mẫu ( xem bản demo ) phù hợp:
\*
- Dấu hoa thị văn bản
\S*
- Không có hoặc nhiều khoảng trống
\({2}
- Đúng 2 dấu ngoặc trái
.*?
- Không hoặc nhiều ký tự ngoại trừ dòng mới (Lưu ý: Nếu bạn cần khớp trên nhiều dòng, hãy thêm lại S
logo) càng ít càng tốt ở cái đầu tiên
\){2}
- khung đóng đôi
\S*
- 0+ dấu cách.
Ngoài ra:tương tự, nhưng không được kiểm soát (do đó, hiệu quả hơn một chút):
\*\s*\({2}[^)]*(?:\)(?!\))[^)]*)*\){2}\s*
Nhìn thấy Bản demo IDEONE:
import re
p = re.compile(r'\*\s*\({2}.*?\){2}\s*')
test_str = "Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này* ((Bla Bla Bla (Bla Bla) A40 & A41)) Đặt tên Kiểm tra nhiều từ với 3456 số và nội dung này2* ((Bla Bla Bla (Bla Bla) A42 & A43)) Kiểm tra tên nhiều từ với 78910 số và nội dung này3* ((Bla Bla Bla (Bla Bla) A44 & A45)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này4* ((Bla Bla Bla (Bla Bla) A46 & A47)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này5* ((Bla Bla Bla (Bla Bla) A48 & A49)) Kiểm tra tên nhiều từ với 1234 số và nội dung này6* ((Bla Bla Bla (Bla Bla) A50 & A51)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này7* ((Bla Bla Bla (Bla Bla) A52 & A53)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này8* ((Bla Bla Bla (Bla Bla) A54 & A55)) Kiểm tra tên nhiều từ với 1234 số và nội dung này9* ((Bla Bla Bla (Bla Bla) A56 & A57)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này10* ((Bla Bla Bla (Bla Bla) A58 & A59)) Đặt tên Kiểm tra nhiều từ với 1234 số và nội dung này11* ((Bla Bla Bla (Bla Bla) A60 & A61)) Kiểm tra tên nhiều từ với 1234 số và nội dung này12* ((Bla Bla Bla (Bla Bla) A62 & A63)) Kiểm tra tên nhiều từ với 1234 số và nội dung này13* ((Bla Bla Bla (Bla Bla) A64 & A65)) Kiểm tra tên nhiều từ với 1234 số và nội dung này14* ((Bla Bla Bla (Bla Bla) A66 & A67)) Kiểm tra tên nhiều từ với 1234 số và nội dung này15* ((Bla Bla Bla (Bla Bla) A68 & A69)) Kiểm tra tên nhiều từ với 1234 số và nội dung này16*"
print(re.split(p, test_str))
gia hạn
用于 tìm lại
Biểu thức chính quy cho:
(?:\*\s*\(\([^)]*(?:\)(?!\))[^)]*)*\)\))?\s*([^*]* (?:\*(?!\s*\(\()[^*]*)*)\s*
Kiểm tra bản demo biểu thức chính quy
Bị đe dọa bởi sự xuất hiện của nó? nó chỉ đơn giản hơn (?:\*\s*\(\(.*?\)\))?\s*(.*?(?=\*\s*(?:\(\(|$)))
phiên bản mở rộng.
Nhìn thấy Bản demo IDEONE .
Tôi là một lập trình viên xuất sắc, rất giỏi!