2016-05-21 7 views
6

मेरी डेटा:कब्जा जटिल नाम

Caterina Guonçallvez braçeyro 
Francisco Ro[dr]í[gueJz luveyro 
Johao de Miranda calçeteyro 
Lucas Martinz Mal-Cuzinhado, braçeyro 
Francisquo d[e] Arruda braçeyro 
Francisquo de Miranda braçeyro 

-first नाम अंतिम नाम
brakets और (मान्यता ओसीआर brakets) जम्मू
-first नाम हाइफ़न से अंतिम नाम के साथ -first नाम अंतिम नाम
-first brakets

अपेक्षित उत्पादन

साथ कण के साथ कण
-first नाम अंतिम नाम के साथ अंतिम नाम नाम
Caterina Guonçallvez 
Francisco Ro[dr]í[gueJz 
Johao de Miranda 
Lucas Martinz Mal-Cuzinhado 
Francisquo d[e] Arruda 
Francisquo de Miranda 
  • नाम uppercases

  • नाम का अंतिम भाग एक अंतरिक्ष (या अंतरिक्ष के साथ अल्पविराम) द्वारा पीछा किया जाता के साथ शुरू कर रहे हैं और एक शब्द "braçeyro" या "calçeteyro की तरह किसी लोअरकेस वर्ण से शुरू "(लोगों की नौकरियां)

    डेटा < - readLines (" क्लिपबोर्ड ", एन्कोडिंग =" latin1 ")

मैं क्या करने की कोशिश की:

^([a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð])\w+[A-Z ,.'-]\w+ 

देने
एंटोनियो Guomez
Caterina Guon
फ्रांसिस्को रो
Johao डी
Francisquo घ

+0

आप उम्मीद पेस्ट कर सकते हैं उत्पादन? जैसा कि मुझे नहीं पता कि आखिरी नाम क्या है। भारत में हमारे यहां सरल अंतिम नाम है। – khrm

+0

मैं 'str_extract (s," \\ p {Lu} [\\ w \\] \\ [-] * (?: (?: \\ s + d \\ [? E \\] का उपयोग करता हूं?)? \\ s + \\ p {Lu} [\\ w \\] \\ [-] *) * ") ', यह स्वीकार्य उत्तर का एक रैखिक संस्करण है (इस प्रकार तेज़ है) और साथ ही नामों से मेल खाता है कोई अपरकेस अक्षर। –

उत्तर

6

पैटर्न (([A-Z][\w\[\]-]+|de|d\[e\])\s?)+ रिटर्न:

'Caterina Guonçallvez ' 
'Francisco Ro[dr]í[gueJz ' 
'Johao de Miranda ' 
'Lucas Martinz Mal-Cuzinhado' 
'Francisquo d[e] Arruda ' 
'Francisquo de Miranda ' 

इससे आपका स्थानीय सेट हो जाती है ई सही ढंग से।

रेगेक्स अक्षरों (और हाइफ़न) के समूहों से मेल खाता है, जो अपरकेस एक से शुरू होता है, या "डी", वैकल्पिक स्थान के बाद। इसका मतलब है कि आपको पिछली जगहों को हटाने के लिए तारों को पट्टी करने की आवश्यकता होगी।


संपादित करें: सबूत यह अनुसंधान में काम करता है:

> Sys.setlocale("LC_ALL","en_us.UTF-8") 
> library(stringr) 
> x <- "Caterina Guonçallvez braçeyro " 
> str_match(x, '(([A-Z][\\w\\[\\]-]+|de|d\\[e\\])\\s?)+') 
    [,1]     [,2]   [,3]   
[1,] "Caterina Guonçallvez " "Guonçallvez " "Guonçallvez" 
+0

ठीक है, बढ़िया! 'फ्रांसिस्को रो [डॉ] í [guejz luveyro'how डाइक्रिटिक्स संकेत और उच्चारण शामिल हैं? – Wilcar

+0

ओह, मैं चरित्र सेट में ब्रैकेट को शामिल करना भूल गया। अगर आपके पास सही लोकेल सेट है, तो जिस तरह से मुझे समझ में आया, उच्चारण को स्वचालित रूप से काम करना चाहिए। दुर्भाग्य से मैंने आपके प्रश्न को गलत तरीके से पढ़ा और 'आर' टैग नहीं देखा, इसलिए मैंने इसे पायथन में बनाया (जहां एक साधारण ध्वज 're.UNICODE' है), लेकिन [इस] के अनुसार (http: //astrostatistics.psu। edu/su07/r/html/base/html/regex.html) यदि आपके पास सही लोकेल है तो इसे काम करना चाहिए। – L3viathan

+0

मैं पैटर्न का परीक्षण करने के लिए regexR का उपयोग करता हूं। R – Wilcar

संबंधित मुद्दे