2010-05-31 2 views
10

मैं पाठ फ़ाइल को अवधि में समाप्त होने वाले वाक्य में पार्स करने की कोशिश कर रहा हूं, लेकिन श्री हॉपकिन्स जैसे नाम अवधि के लिए मिलान पर झूठे अलार्म फेंक रहे हैं।मिलान करने के लिए Regex। (वाक्यों के अंत में चिह्नित अवधि) लेकिन श्रीमान (जैसा कि श्री हॉपकिन्स में)

क्या रेगेक्स पहचानता है "।" लेकिन "श्रीमान" नहीं

बोनस के लिए, मैं भी उपयोग कर रहा हूं! वाक्यों के अंत को खोजने के लिए, इसलिए मेरा वर्तमान रेगेक्स /(!/./ है और मुझे एक ऐसा जवाब पसंद आएगा जो मेरा भी शामिल करता है।

+0

क्या अन्य लघु रूपों (जैसे, "सुश्री"), punctuated के संक्षिप्त रूप (के बारे में "ACME "), या अंडाकार (" ... ")? –

+0

'श्रीमती'? 'Ms.'? 'Dr.'? – kennytm

+0

यदि कोई जानता है कि श्रीमान को कैसे करना है जो मुझे आगे बढ़ेगा। –

उत्तर

12

negative look behind का उपयोग करें।

(?<!Mr|Mrs|Dr|Ms)\. 

इस अवधि से मेल खाएगी केवल अगर यह नहीं आता है के बाद Mr, Mrs, Dr या Ms

<? 
    $str = "This is Mr. Someone and Mrs. Somebody. They are here to meet Dr. SomeoneElse."; 
    $str = preg_replace("/(?<!Mr|Mrs|Dr|Ms)\\./", "\n", $str); 
    echo($str); 
?> 
//outputs: 
This is Mr. Someone and Mrs. Somebody 
They are here to meet Dr. SomeoneElse 
+3

मुझे पता था कि लिंकन डॉ। पर रहने वाले किसी व्यक्ति को मैं अल्बर्ट आरडी पर रहता था। –

+0

ठीक है, मैं बहुत शिकायत करता हूं क्योंकि यह समस्या श्रीमान के लिए सुलभ है। यह केवल डॉ मिस पर विफल रहता है और सुश्री और श्रीमती काम नहीं करते हैं। –

6

यह किसी भी साधारण तंत्र के साथ नहीं किया जा सकता है। यह निराशाजनक अस्पष्ट है । वाक्य संक्षिप्त रूपों के साथ समाप्त कर सकते हैं, और उन मामलों में वे दो पीरियड के साथ लिखा नहीं कर रहे हैं।

Unicode TR29 देखें। इसके अलावा आईसीयू खुला स्रोत पुस्तकालय है, जो एक बुनियादी कार्यान्वयन भी शामिल है देखते हैं।

1

अपने वाक्य हमेशा पालन कर रहे हैं दो रिक्त स्थान से? यदि ऐसा है तो आप केवल उस के लिए जांच सकते हैं ...

/\.\s{2}/

और वाक्य विराम चिह्न के दूसरे छोर को शामिल: /[\.\!\?]\s{2}/

तुम भी अन्य बातों के जो एक वाक्य के अंत का संकेत हो सकता है की जांच कर सकता है, जैसे अगर अगले शब्द का अक्षर बड़ा है, यह एक गाड़ी वापसी के बाद आता है इत्यादि। लेकिन सबसे अच्छा आप केवल एक शिक्षित अनुमान लगाने में सक्षम होंगे, जैसा कि अवधि के ऊपर बताया गया है, यह बहुत अस्पष्ट है।