आर

2015-02-01 3 views
5

में दो विशिष्ट शब्दों के बीच शब्दों की एक स्ट्रिंग निकालें मैं निम्न स्ट्रिंग है: "PRODUCT colgate good but not goodOKAY"आर

मैं PRODUCT और OKAY

उत्तर

8

के बीच सभी शब्दों को निकालने के लिए चाहते हैं तो आप उपयोग कर सकते हैं gsub:

vec <- "PRODUCT colgate good but not goodOKAY" 

gsub(".*PRODUCT\\s*|OKAY.*", "", vec) 
# [1] "colgate good but not good" 
9
x = "PRODUCT colgate good but not goodOKAY" 
library(stringr) 
str_extract(string = x, pattern = perl("(?<=PRODUCT).*(?=OKAY)")) 

(?<=PRODUCT) - PRODUCT

के लिए मैच के पीछे देखें

.* नई लाइनों को छोड़कर सबकुछ मैच करें।

(?=OKAY) - OKAY से मेल खाने के लिए आगे देखें।

मुझे यह जोड़ना चाहिए कि आपको इसके लिए stingr पैकेज की आवश्यकता नहीं है, आधार फ़ंक्शन sub और gsub ठीक काम करते हैं। मैं सिंटैक्स की इसकी स्थिरता के लिए स्ट्रिंग का उपयोग करता हूं: चाहे मैं निकालने, प्रतिस्थापन, पहचान आदि कर रहा हूं। फ़ंक्शन नाम अनुमानित और समझा जा सकता है, और तर्क एक निरंतर क्रम में हैं। मैं stringr का उपयोग करता हूं क्योंकि यह मुझे हर बार प्रलेखन की आवश्यकता से बचाता है।

13

यह sub साथ किया जा सकता:

s <- "PRODUCT colgate good but not goodOKAY" 
sub(".*PRODUCT *(.*?) *OKAY.*", "\\1", s) 

दे रही है:

[1] "colgate good but not good" 

कोई पैकेज नहीं की जरूरत है।

.*PRODUCT *(.*?) *OKAY.* 

Regular expression visualization

Debuggex Demo

5

आप qdapRegex पैकेज से rm_between समारोह इस्तेमाल कर सकते हैं:

यहाँ नियमित अभिव्यक्ति का एक दृश्य है। यह एक स्ट्रिंग और बाएं और दाएं सीमा को निम्नानुसार लेता है:

x <- "PRODUCT colgate good but not goodOKAY" 

library(qdapRegex) 
rm_between(x, "PRODUCT", "OKAY", extract=TRUE) 

## [[1]] 
## [1] "colgate good but not good"