से शब्दों को निकालने का अनुमान है, मुझे लगता है कि यह एक आम समस्या है, और मुझे SO से कुछ सहित कई वेबपृष्ठ मिले, लेकिन मैं इसे समझने में असफल रहा।आर में REGEX: स्ट्रिंग
मैं रेगेक्स के लिए नया हूं, और मैं इसे वाक्य में पहले कुछ शब्दों को निकालने के लिए आर में उपयोग करना चाहता हूं।
उदाहरण के लिए, अगर मेरे वाक्य
z = "I love stack overflow it is such a cool site"
आईडी होने के रूप में मेरी उत्पादन के लिए (अगर मैं पहले चार शब्द की जरूरत है) की तरह
[1] "I love stack overflow"
या (अगर मैं पिछले चार की जरूरत है शब्द)
[1] "such a cool site"
निश्चित रूप से
, निम्न कार्य करता
paste(strsplit(z," ")[[1]][1:4],collapse=" ")
paste(strsplit(z," ")[[1]][7:10],collapse=" ")
लेकिन मैं प्रदर्शन के मुद्दों के लिए एक regex समाधान की कोशिश करना चाहते हैं के रूप में मैं बहुत बड़ा फाइलों के साथ सौदा करने की जरूरत है (और यह भी इसके बारे में जानने के लिए)
मैं कई लिंक को देखा, सहित Regex to extract first 3 words from a string और http://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html
तो मैं
gsub("^((?:\S+\s+){2}\S+).*",z,perl=TRUE)
Error: '\S' is an unrecognized escape in character string starting ""^((?:\S"
मैं अन्य सामान की कोशिश की लेकिन यह आम तौर पर मुझे या तो पूरी स्ट्रिंग लौटे तरह बातें करने की कोशिश की , या खाली स्ट्रिंग।
सबस्ट्र के साथ एक और समस्या यह है कि यह एक सूची देता है। शायद ऐसा लगता है कि [[]]
ऑपरेटर बड़ी फ़ाइलों से निपटने और लागू सामग्री करने पर चीजों को धीमा कर रहा है (??)।
ऐसा लगता है कि आर में इस्तेमाल सिंटेक्स कुछ अलग है? धन्यवाद!
आपको आर रेगेक्स में डबल एस्केप का उपयोग करने की आवश्यकता है। '\ S' ->' \\ एस' –
आप 'stringi :: stri_extract_all_words (z) [[1]] [1: 4]' का उपयोग भी कर सकते हैं, जिसका उपयोग करना आसान है और रेगेक्स को जानने की आवश्यकता नहीं है। हालांकि आप शब्दों को एक अलग मूल्य प्राप्त करेंगे। –
क्या आप उसी विचार का उपयोग नहीं कर सकते जिसे मैंने साझा किया था [आपके पिछले प्रश्न में] (http://stackoverflow.com/questions/33785594/manipulate-char-vectors-inside-a-data-table-object-in -r)? आपको केवल आर में अपनी बैकस्लैश पर दोगुनी करने की आवश्यकता है, जैसा कि पहले से ही @stribizhev द्वारा इंगित किया गया है। – A5C1D2H2I1M1N2O1R2T1