Tôi đang cố gắng kết xuất dữ liệu từ tệp xuất SQL với cụm từ thông dụng. Để khớp với trường nội dung bài đăng, tôi sử dụng '(?P<content>.*?)
'. Nó hoạt động tốt hầu hết thời gian, nhưng nếu trường chứa chuỗi '\ n', cụm từ thông dụng sẽ không khớp. Làm thế nào tôi có thể sửa đổi các biểu thức chính quy để phù hợp với chúng? Cảm ơn!Cụm từ thông dụng: cách đối sánh chuỗi chứa " n" (dòng mới)?
Ví dụ (Tôi đang sử dụng Python):
>>> re.findall("'(?P<content>.*?)'","'<p>something, something else</p>'")
['<p>something, something else</p>']
>>> re.findall("'(?P<content>.*?)'","'<p>something, \n something else</p>'")
[]
T.B. Dường như tất cả các chuỗi với '\' ở phía trước được coi là ký tự thoát. Làm thế nào tôi có thể nói với regx để đối xử với họ như họ đang có?
Cảm ơn! Ngoài ra, chỉ cần ví dụ, nếu tôi đã nói '\ a' trong chuỗi, nó sẽ được chuyển thành '\ x07'. Có cách nào để giữ chúng như chúng không? Hoặc nếu nó không quan trọng khi tôi đặt chúng vào cơ sở dữ liệu? –
'\ x07' chỉ là một cách để python đại diện cho ký tự bằng mã 7. Một cách khác để biểu diễn nó là viết' \ a'. Chuỗi thực sự chỉ chứa một ký tự đơn trong cả hai trường hợp. Bạn có thể xác nhận điều này bằng cách kiểm tra 'len (" \ x07 ")' và 'len (" \ a ")'. Ngoài ra, hãy thử so sánh '" \ a "==" \ x07 "' hoặc tìm kiếm '" a "' trong '" \ a "': '" \ a ".find (" a ")' hoặc cho '" 0 " 'in' "\ x07" ':' "\ x07" .find ("0") '. Kết quả nên rất thông tin. –
Xin chào Adam! Nó vẫn còn đặt ra một vấn đề, nếu chuỗi gốc chứa \ 'Kết quả sẽ được chuyển thành', sẽ phá vỡ các lệnh sql. Vì vậy, điều quan trọng là phải có chuỗi "vì nó là" –