2013-02-16 60 views
13

मैंने पहले कभी पर्ल का उपयोग नहीं किया है और मेरे पास मूल प्रश्न है।विभाजन() लेकिन डिलीमीटर

my $string1 = "Hi. My name is Vlad. It is snowy outside."; 

my @array = split('.' $string1); ##essentially I want this, but I want the period to be kept 

मैं इस स्ट्रिंग को '।' पर विभाजित करना चाहता हूं। लेकिन मैं इस अवधि को रखना चाहता हूं। इसे किस तरह पूर्ण कर सकते है?

उत्तर

21

आप lookbehind उपयोग कर सकते हैं यह करने के लिए:

split(/(?<=\.)/, $string) 

रेगेक्स एक खाली स्ट्रिंग से मेल खाता है जो एक अवधि के बाद होता है।

आप एक ही समय में वाक्य के बीच सफेद स्थान को निकालना चाहते हैं, आप इसे करने के लिए बदल सकते हैं:

split(/(?<=\.)\s*/, $string) 

सकारात्मक और नकारात्मक lookbehind here

+0

यह बिल्कुल काम करता है कि इसे आपको कैसे धन्यवाद देना चाहिए। क्या आप समझ रहे होंगे कि क्या हो रहा है? – SystemFun

+0

जहां तक ​​वाक्यविन्यास है? – SystemFun

+0

नियमित-expressions.info – Barmar

10

आप कोई आपत्ति नहीं है अवधि सरणी में अपने स्वयं के तत्वों में विभाजित किया जा रहा है, तो आप उन्हें रखने के लिए विभाजन बताने के लिए कोष्ठक का उपयोग कर सकते हैं:

my @array = split(/(\.)/, $string); 
+0

मुझे लगता है मैं उस के साथ काम कर सकता था लगता है समझाया गया है, लेकिन मैं उन्हें वाक्य से जुड़ा करना पसंद करूंगा ताकि प्रत्येक सरणी तत्व अनिवार्य रूप से एक वाक्य हो। – SystemFun

+0

यह एक लुकहेथ या लुकहेड दावे की समस्या की तरह लगता है, जिसे मैं सहज नहीं हूं। –

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

  • कोई संबंधित समस्या नहीं^_^