2011-08-29 7 views
21

मैं सही नियमित अभिव्यक्ति की तलाश में हूं। निम्नलिखितपूरे शब्दों के रूप में स्ट्रिंग खोजने के लिए आर में grep का उपयोग करना (लेकिन शब्दों के हिस्से के रूप में तार नहीं)

t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH") 
grep("TH",t1, value=T) 

रिटर्न t1 के सभी तत्वों, लेकिन केवल पहले और दूसरे सही हैं। मैं सिर्फ शब्द/वाक्यांश TH के साथ प्रविष्टियों को वापस करना चाहता हूं?

+0

वहाँ दो जवाब पहले से ही होने के बावजूद, आप निर्दिष्ट करना चाहिए कि आप अपने शीर्षक में के रूप में 'शब्द' से क्या मतलब है। 'TH2' या' TH_TH' के बारे में क्या? –

उत्तर

30

आप (गैर शब्द पात्रों से घिरा हुआ यानी शब्द अपनी खोज को तार इसलिए केवल पूरे शब्द मिलान किया जाएगा चारों ओर word boundary anchors (\b) जोड़ने के लिए या शुरू/स्ट्रिंग, जहाँ "शब्द चरित्र" का अर्थ है \w के अंत में, यानी अक्षरांकीय चरित्र की जरूरत है)।

grep("\\bTH\\b",t3, value=T) 
12

प्रयास करें आप शब्द के प्रारंभ/अंत में मैच के लिए एक regexp में \< और \> उपयोग कर सकते हैं।

grep ("\\<TH\\>", t1) आदि

+0

@ टिम पिट्ज़कर तेज था :) मुझे आश्चर्य है, अगर इन दो regexps अलग है? – Anatoliy

+0

आपका अधिक स्पष्ट है, हालांकि इस मामले में, वे कार्यात्मक रूप से समान हैं। –

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