Tôi đang tìm kiếm các từ trong chuỗi phù hợp với một mẫu cụ thể. Vấn đề là, nếu các từ là một phần của địa chỉ email, chúng sẽ bị bỏ qua.Regex - Từ kết hợp trong mẫu, ngoại trừ trong địa chỉ email
Để đơn giản hóa, mẫu của "từ thích hợp" \w+\.\w+
- một hoặc nhiều ký tự, một khoảng thời gian thực và một chuỗi ký tự khác.
Câu gây ra sự cố, ví dụ: a.a b.b:c.c [email protected]
.
Mục tiêu là chỉ khớp với [a.a, b.b, c.c]
. Với hầu hết Regexes tôi xây dựng, e.e
cũng trả về (vì tôi sử dụng một số kết hợp ranh giới từ).
Ví dụ:
>>> re.findall(r"(?:^|\s|\W)(?<[email protected])(\w+\.\w+)([email protected])\b", "a.a b.b:c.c [email protected]") ['a.a', 'b.b', 'c.c', 'e.e']
Làm thế nào tôi có thể kết hợp duy nhất trong số những từ mà không chứa "@"?
thay vì cố gắng để có được một regex thông minh đi, có lẽ làm sạch chuỗi đầu tiên? dải đầu tiên \ w + @ \ w + rồi xử lý. Tôi làm rất nhiều công việc ETL với python và thường nó chỉ đơn giản là dễ dàng hơn/nhanh hơn để làm sạch thùng rác, sau đó chia/xử lý dữ liệu. – sniperd
http: // www.rexegg.com/regex-best-trick.html#thetrick –