Tên trong biểu mẫu: Ceasar, Julius sẽ được chia thành First_name Julius họ Ceasar.Python 3 regex với dấu phụ và chữ lằn,
Tên có thể chứa dấu (á à é ..), và ligature (æ, ø)
Mã này dường như làm việc OK trong Python 3,3
import re
def doesmatch(pat, str):
try:
yup = re.search(pat, str)
print('Firstname {0} lastname {1}'.format(yup.group(2), yup.group(1)))
except AttributeError:
print('no match for {0}'.format(str))
s = 'Révèrberë, Harry'
t = 'Åapö, Renée'
u = 'C3po, Robby'
v = 'Mærsk, Efraïm'
w = 'MacDønald, Ron'
x = 'Sträßle, Mpopo'
pat = r'^([^\d\s]+), ([^\d\s]+)'
# matches any letter, diacritic or ligature, but not digits or punctuation inside the()
for i in s, t, u, v, w, x:
doesmatch(pat, i)
Tất cả ngoại trừ u phù hợp. (không phù hợp với các con số trong tên), nhưng tôi tự hỏi nếu không có cách nào tốt hơn so với cách tiếp cận không phải không phải chữ số. Quan trọng hơn mặc dù: Tôi muốn tinh chỉnh mô hình để nó từ bỏ vốn từ chữ thường, nhưng bao gồm dấu phụ và chữ cái vốn, tốt nhất là sử dụng regex. Như thể ([A-Z] [a-z] +), sẽ khớp với các ký tự có dấu và kết hợp.
Điều này có khả thi không?
(những gì tôi đã nhìn cho đến nay: Dive into python 3 on UTF-8 vs Unicode; này Regex tutorial trên Unicode (mà tôi không sử dụng), tôi nghĩ rằng tôi không cần new regex nhưng tôi thừa nhận tôi đã không đọc tất cả các tài liệu hướng dẫn của nó)
Tại sao không 'pat = r '^ ([^,] +), (. *) $''? –
@Cristian: điều đó cũng không khớp với 'G @ rd $ tr% m, Joe'? Cho đến thời điểm đó tôi sẽ cần phải phân tích các tên twitter nghệ thuật, tôi không muốn. Chưa. Nhưng, cảm ơn bạn! – RolfBly