2012-03-06 16 views
11

को छोड़कर कोई भी वर्ण [^ abc] को छोड़कर किसी भी एकल वर्ण: ए, बी, या सीRegexp: अनुक्रम

लेकिन यह कैसे मैं अनुक्रम abc

तो छोड़कर किसी भी पात्रों के लिए रेगुलर एक्सप्रेशन से कर सकते हैं, कुछ

"Hello abc awesome world".scan /[^(abc)]+/ 

"हैलो" और "भयानक दुनिया" लौटाएगा।

पुनश्च: और यह स्ट्रिंग

+0

संबंधित: http://stackoverflow.com/q/5504272/946850 – krlmlr

+0

इसके अलावा, अधिक निकटता से संबंधित: http://stackoverflow.com/q/6180556/946850 – krlmlr

+0

धन्यवाद, उपयोगकर्ता नाम! :) – fl00r

उत्तर

15

यह lookaround कहा जाता है, आपके मामले में आप नकारात्मक अग्रदर्शी का उपयोग करना चाहेंगे बंटवारे के बारे में नहीं है। मुझे रूबी में सटीक वाक्यविन्यास के बारे में निश्चित नहीं है, लेकिन (?!abc) के साथ कुछ काम कर सकता है। ध्यान दें कि लुकराउंड किसी भी इनपुट का उपभोग नहीं करता है, इसलिए आपको इसे किसी भी पैटर्न के साथ प्राप्त करना होगा जिसे आप मेल करना चाहते हैं। शायद (?:(?!abc).)+ क्या आप देख रहे हैं?

+1

मुझे बहुत समय बचाया। '(?! एबीसी) कर रहा था। + ', जो वर्णों के पूरे अनुक्रम के लिए नकारात्मक दिखने वाला था। ऐसा लगता है कि यह चरित्र के आधार पर एक चरित्र पर ऐसा करता है, जो मेरे लिए भी नहीं हुआ था। अब सब ठीक है और खुश है। ग्रेसियस! – user1630830