2013-11-03 4 views
5

आर में नियमित अभिव्यक्ति में \\s|* और \\s|[*] के बीच क्या अंतर है?आर में नियमित अभिव्यक्ति में `\ s | *` और `\ s | [*] 'के बीच का अंतर?

> gsub('\\s|*','','Aug 2013*') 
[1] "Aug2013*" 
> gsub('\\s|[*]','','Aug 2013*') 
[1] "Aug2013" 

[ ] का कार्य क्या है?

+0

'*' रेगेक्स में एक विशेष चरित्र है, इसलिए '[] 'चरित्र की शाब्दिक व्याख्या को मजबूर करता है। – joran

उत्तर

3

पहली अभिव्यक्ति जिस तरह से आप यह प्रयोग कर रहे हैं में अमान्य है के बराबर है, इसलिए * विशेष वर्ण है। यदि आप विशेष वर्णों के साथ sub या gsub का उपयोग करना चाहते हैं, तो आप fixed = TRUE पैरामीटर सेट का उपयोग कर सकते हैं।

यह स्ट्रिंग को पैटर्न के रूप में खोजने के लिए लेता है और किसी विशेष वर्ण को अनदेखा करता है।

R दस्तावेज में Pattern Matching and Replacement देखें। \\s|*

\s  whitespace (\n, \r, \t, \f, and " ") 
|  OR 
:

x <- 'Aug 2013****' 
gsub('*', '', x, fixed=TRUE) 
#[1] "Aug 2013" 

आपकी दूसरी अभिव्यक्ति बस अपना पहला अभिव्यक्ति की व्याख्या के रूप में जहाँ तक * के लिए एक चरित्र वर्ग [] उपयोग कर रहा है के रूप में ही भागने से बचने के लिए, ..

x <- 'Aug 2013*' 
gsub('\\s|\\*', '', x) 
#[1] "Aug2013" 

और दूसरी अभिव्यक्ति: \\s|[*]

\s  whitespace (\n, \r, \t, \f, and " ") 
|  OR 
[*]  any character of: '*' 
3

[] का उपयोग * से एक शाब्दिक तारांकन से बचने के लिए कुछ और नहीं है।

पहला रेगेक्स अमान्य है (* विशेष वर्ण "शून्य या अधिक" है)।

दूसरा regex

'\\s|\\*' 
संबंधित मुद्दे