फॉर्म में नाम: सीज़र, जूलियस को प्रथम_नाम जूलियस उपनाम सीसर में विभाजित किया जाना है।डाइक्रिटिक्स और लिगचर के साथ पायथन 3 रेगेक्स,
नाम विशेषक हो सकती है (एक é ..), और संयुक्ताक्षर (æ, ओ)
इस कोड को अजगर 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)
में ठीक काम करने के लिए सभी को छोड़कर यू से मेल खाते हैं लगता है। (नामों में संख्याओं के लिए कोई मिलान नहीं), लेकिन मुझे आश्चर्य है कि गैर अंकों वाले गैर-अंतरिक्ष दृष्टिकोण से बेहतर तरीका नहीं है। हालांकि अधिक महत्वपूर्ण है: मैं पैटर्न को परिशोधित करना चाहता हूं ताकि यह लोअरकेस अक्षरों से राजधानियों को खत्म कर दे, लेकिन पूंजी डाइक्रिटिक्स और लिगरेचर, अधिमानतः रेगेक्स का उपयोग करके भी। जैसे कि ([ए-जेड] [ए-जेड] +), उच्चारण और संयुक्त पात्रों से मेल खाता है।
क्या यह संभव है?
(क्या मैं अब तक देखा है: Dive into python 3 on UTF-8 vs Unicode; यूनिकोड (जो मैं का उपयोग नहीं कर रहा हूँ) पर यह Regex tutorial; मुझे लगता है मैं new regex की जरूरत नहीं है, लेकिन मैं मानता मैं अपने सारे दस्तावेज़ पढ़ नहीं किया है)
क्यों नहीं 'pat = r'^([^,] +), (। *) $ ''? –
@ क्रिस्टियन: क्या वह 'जी @ rd $ tr% m, जो' से भी मेल नहीं खाता? ऐसे समय तक मुझे कलात्मक twitternames पार्स करने की आवश्यकता होगी, मैं नहीं बल्कि। फिर भी। लेकिन आपका शुक्रिया! – RolfBly