2012-01-28 18 views
6

में स्ट्रिंग अक्षर ढूंढना मेरी कंपनी में हमने हाल ही में देखा है कि एक डेवलपर भाषा फ़ाइलों का उपयोग नहीं कर रहा था लेकिन सीधे कोड में टेक्स्ट डाल रहा था।मेरे कोड

मेरा विचार उन उद्धरणों के बीच शब्दों की खोज करना था जिनमें कम से कम 1 या अधिक सफेद जगह है। लेकिन मैं थोड़े

("|')(\w|\s{1,})*('|") 

साथ अटक गया इस मैच पाठ करता है लेकिन आवश्यकता नहीं है यह कम से कम 1 शब्द और कम से कम 1 खाली स्थान के है (इसलिए यह उद्धरण के बीच कुछ के बारे में मेल खाता है)। क्या कोई मेरी मदद कर सकता है?

भाषा मैं इस के लिए उपयोग करना चाहते हैं पीएचपी है (या मैं एक नोटपैड ++ खोज कर सकता है)

+0

क्या प्रोग्रामिंग भाषा:

"(?=[^"\n]*\w)(?=[^"\n]*\s)[^"\n]+"|'(?=[^'\n]*\w)(?=[^'\n]*\s)[^'\n]+' 

PHP में यह कैसा लगेगा? –

+0

प्रश्न में भाषा को जोड़ा गया – Rob

+0

ब्याज के उद्धरण के अंदर क्या है? शब्दों और रिक्त स्थान के अलावा कुछ भी? क्या वे 'फू बार बाज' की तरह दिखते हैं? भागने की अनुमति है? कोड कौन सा भाषा है जिसमें प्रश्नकर्ता डेवलपर का उपयोग कर रहा था (जिस कोड को आप खोज रहे हैं)? – Qtax

उत्तर

2

आप एकल या डबल उद्धृत तार (पलायन) के बिना मेल करना चाहते हैं कि एक "शब्द" और एक अंतरिक्ष शामिल आप इस्तेमाल कर सकते हैं:

preg_match_all("/\"(?=[^\"\n]*\\w)(?=[^\"\n]*\\s)[^\"\n]+\"|'(?=[^'\n]*\\w)(?=[^'\n]*\\s)[^'\n]+'/", $string, $matches); 
+0

धन्यवाद, एक आकर्षण की तरह काम करता है! बुरा करने के लिए मैं इसे पढ़ नहीं सकता है अभी तक regex का अध्ययन करने के लिए कुछ समय लेने की जरूरत है। केवल समस्या यह है कि यह शब्दकोष के बीच सभी शब्द भी लेता है। क्या ईओएल की खोज इसे ठीक कर सकती है? – Rob

+0

+1, उम्मीद है कि स्ट्रिंग में भाग नहीं हो सकता है। अगर वे कर सकते हैं, तो एक रेगेक्स काफी गन्दा हो जाएगा। मैंने अपना समाधान वापस ले लिया है क्योंकि मुझे अधिक से अधिक किनारे के मामले मिलते हैं जहां यह असफल हो जाएगा ... –

+0

@Rob, "यह शब्दकोष के बीच सभी शब्द भी लेता है", आपका क्या मतलब है? क्या आप कुछ उदाहरण दे सकते हैं? यदि आप स्ट्रिंग्स कई लाइनों का विस्तार नहीं करते हैं तो आप उन सभी [^ "]' और '[^ ']' से '[^" \ n] 'और' [^' \ n] 'को भी बदलना चाहेंगे। @ टिम, धन्यवाद। और आप सही हैं, अगर वहां से बच निकले तो शायद यह आपके जैसे अन्य तरीके से लिखना बेहतर होगा। – Qtax

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