Làm thế nào về:
import re
s = "alpha.Customer[cus_Y4o9qMEZAugtnW] ..."
m = re.search(r"\[([A-Za-z0-9_]+)\]", s)
print m.group(1)
Đối với tôi in này:
cus_Y4o9qMEZAugtnW
Lưu ý rằng các cuộc gọi đến re.search(...)
thấy trận đấu đầu tiên với cụm từ thông dụng, do đó, không tìm thấy số [card]
trừ khi bạn lặp lại tìm kiếm lần thứ hai.
Edit: Các regular expression đây là một con trăn raw string literal, mà về cơ bản có nghĩa là dấu xồ nguợc không được đối xử như ký tự đặc biệt và được truyền thông qua các phương pháp re.search()
không thay đổi. Các parts của biểu thức chính quy là:
\[
phù hợp với một [
ký tự chữ
(
bắt đầu một nhóm mới
[A-Za-z0-9_]
là một bộ ký tự phù hợp với bất kỳ chữ cái (vốn hay chữ thường), chữ số hoặc nhấn
+
khớp với phần tử trước (bộ ký tự) một hoặc nhiều lần.
)
kết thúc nhóm
\]
phù hợp với một chữ ]
nhân vật
Edit: Như DK đã chỉ ra, các biểu thức chính quy có thể được đơn giản hóa để:
m = re.search(r"\[(\w+)\]", s)
kể từ khi \w
là một chuỗi đặc biệt có nghĩa là giống như [a-zA-Z0-9_]
tùy thuộc vào re.LOCALE
một nd re.UNICODE
cài đặt.
bạn có thể vui lòng giải thích câu trả lời của bạn phần regex, để tôi donot phải hỏi lại cho loại tương tự của vấn đề. Cảm ơn. – user993563
Tôi đã chỉnh sửa câu trả lời của mình với giải thích về cụm từ thông dụng và liên kết đến tài liệu biểu thức chính quy python. – srgerg
Tại sao không thay thế '[A-Za-z0-9_]' bằng '\ w'? –