2012-10-02 15 views
5
word:12335 
anotherword:2323434 
totallydifferentword/455 
word/32 

में से एक से पहले मैं केवल आधार आर कार्यों का उपयोग कर : या / से पहले चरित्र स्ट्रिंग हड़पने के लिए की जरूरत का पता लगाएं। मैं इसे stringr का उपयोग करके कर सकता हूं लेकिन मेरे पैकेज में एक और निर्भरता नहीं जोड़ना चाहता हूं। शब्दों में चरित्र की परिवर्तनीय संख्या हो सकती है लेकिन हमेशा विभाजक (एक) में समाप्त होती है। मुझे जो भी आता है उसे रखने की ज़रूरत नहीं है।एक शब्द दो संभव विभाजक

+0

वर्ण हमेशा अल्फा ए-जेड तक पहुंच जाएं? या वे कोई पात्र हो सकते हैं? रेगेक्स प्रश्नों के साथ, जितना संभव हो उतना विवरण प्रदान करने का प्रयास करें। इसके अलावा, आपने क्या प्रयास किया है? –

+0

हां, हमेशा अल्फा हालांकि मामला मिश्रित किया जा सकता है। 'WoRd'। – Maiasaura

+0

यदि मामले मिश्रित हैं तो आप '[a-zA-z]' –

उत्तर

3

शायद कोशिश:

x <- c("word:12335", "anotherword:2323434", "totallydifferentword/455", "word/32") 
lapply(strsplit(x, ":|/"), function(z) z[[1]]) #as a list 
sapply(strsplit(x, ":|/"), function(z) z[[1]]) #as a string 

वह भी लेकिन अपने अनुभवों में इसी तरह की समस्याओं strsplit के साथ काम करेंगे कम वाक्पटु लेकिन तेजी से हो जाएगा gsub साथ regex समाधान कर रहे हैं।

मुझे लगता है इस regex के रूप में अच्छी तरह से काम करेगा:

gsub("([a-z]+)([/|:])([0-9]+)", "\\1", x) 

इस मामले gsub में था तेजी से:

Unit: microseconds 
     expr min  lq median  uq  max 
1  GSUB() 19.127 21.460 22.392 23.792 106.362 
2 STRSPLIT() 46.650 50.849 53.182 54.581 854.162 
+0

धन्यवाद! मुझे नहीं पता था कि आप 'strsplit' में विभाजकों की पसंद का उपयोग कर सकते हैं। धन्यवाद टायलर! – Maiasaura

+0

आप किसी भी regex अभिव्यक्ति का उपयोग कर सकते हैं। –

0

This regex seems to work। क्या आप इसका उपयोग आर में कर सकते हैं?

+2

चाहते हैं कि हमेशा अपने उत्तर में कोड शामिल करना एक अच्छा विचार है, क्योंकि इस बात की कोई गारंटी नहीं है कि आपके द्वारा प्रदान किया गया लिंक भविष्य में होगा। (हर तरह से लिंक को छोड़कर कोड भी छोड़ दें) – freefaller

+0

यह एक केवल लिंक है। एंटीटल "रूबुलर" में एक इनपुट बॉक्स है और रेगेक्स एक्सप्रेशन के परिणाम उत्पन्न करता है (कम से कम जो भी रूबी के इस वर्जन का उपयोग करता है)। आर-रेगेक्स इंजन द्वारा संचालित एक समान पृष्ठ कभी नहीं देखा है, लेकिन ऐसा गंतव्य उपयोगी हो सकता है। (मैं आमतौर पर आर-कंसोल पर परीक्षण करता हूं।) –

2

कुछ इस तरह रूबी में http://rubular.com/r/PzVQVIpKPq

^(\w+)(?:[:\/]) 
चाल करना होगा

स्ट्रिंग के सामने से शुरू करना, किसी भी शब्द विशेषता को पकड़ो आरएस और उन्हें कैप्चर करें, जब तक कि आप गैर-कैप्चरिंग / या :

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