2012-08-01 9 views
13

को रखने के लिए जावास्क्रिप्ट RegExp मैं स्ट्रिंग से वाक्यों को प्राप्त करने के लिए जावास्क्रिप्ट के विभाजन का उपयोग करने की कोशिश कर रहा हूं लेकिन delimiter eg!?पाठ में पाठ को विभाजित करने और डिलीमीटर

अब तक मैं

sentences = text.split(/[\\.!?]/); 

जो लेकिन काम करता है प्रत्येक वाक्य को समाप्त हुए विराम चिह्न को शामिल नहीं करता है (।!?)।

क्या कोई इसे करने का तरीका जानता है?

+1

'

text.match(/\(?[^\.\?\!]+[\.!\?]\)?/g); 

पर लागू किया? 'RegExp में एक विशेष char भी है, इसलिए आपको इसे बचाना होगा – rgvcorley

+3

मेटाएक्टएक्टर्स जैसे '.' और'? 'एक चरित्र वर्ग के अंदर अपने विशेष अर्थ खो देते हैं। एक बिंदु ('.') से मेल खाने का सही तरीका, विस्मयादिबोधक बिंदु ('! '), या एक प्रश्न चिह्न ('? ')' [।!?] 'है। –

उत्तर

38

आप मिलान का उपयोग करना विभाजित नहीं की जरूरत है देखते हैं।

इसे आजमाएं।

var str = "I like turtles. Do you? Awesome! hahaha. lol!!! What's going on????"; 
var result = str.match(/[^\.!\?]+[\.!\?]+/g); 

var expect = ["I like turtles.", " Do you?", " Awesome!", " hahaha.", " lol!!!", " What's going on????"]; 
console.log(result.join(" ") === expect.join(" ")) 
console.log(result.length === 6); 
+0

दुष्ट !! बहुत बहुत धन्यवाद। – daktau

+1

आप एक विभाजन का उपयोग कर सकते हैं: 'text.split (/ \ b (?! [\? \। \!]) /); \ b शब्द सीमाओं पर विभाजित करने के लिए कहता है, निफ्टी हिस्सा नकारात्मक रूप है -ahead। – bavo

+2

रेगेक्स गलत है। अगर मैं टाइप करता हूं: "वाक्यांश 1. वाक्यांश 2. वाक्यांश 3", "वाक्यांश 3" फेंक दिया जाता है। –

5

ऐसा करें: -

sentences = text.split(/[\\.!\?]/); 

? नियमित अभिव्यक्ति में एक विशेष चार तो भाग निकले जाने की जरूरत है।

खेद है कि मैं अपने प्रश्न को पढ़ने से चूक जाएं - आप match उपयोग करने की आवश्यकता आप सीमांकक तो रखना चाहते हैं नहीं splitthis question

+2

बस एक छोटा सा नोट: '?' जैसे विशेष वर्णों को वर्ण वर्ग (वर्ग ब्रैकेट) के अंदर से बचने की आवश्यकता नहीं है। – JoeRocc

6

निम्नलिखित लैरी का जवाब देने के लिए एक छोटा सा इसके अलावा जो भी मिलान कर देंगे paranthetical वाक्य है:

text = "If he's restin', I'll wake him up! (Shouts at the cage.) 
'Ello, Mister Polly Parrot! (Owner hits the cage.) There, he moved!!!" 

से देता है:

["If he's restin', I'll wake him up!", " (Shouts at the cage.)", 
" 'Ello, Mister Polly Parrot!", " (Owner hits the cage.)", " There, he moved!!!"] 
+0

कोई विचार यह दशमलव संख्याओं के लिए कैसे समायोजित करें? जैसे "वहां, वह 99.9% चले गए !!!" –

+1

विराम चिह्न चरित्र वर्ग '[।!?]' के बाद आपने '+' को याद किया, इसलिए यह "स्थानांतरित" होने के बाद तीन विस्मयादिबोधक नहीं ले पाएगा। – Mogsdad

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