2013-02-08 18 views
7

मैं एक रेगेक्स की तलाश में हूं जो विराम चिह्न और सफेद स्थान को छोड़कर वाक्य में पहले शब्द से मेल खाता है। उदाहरण के लिए: "यह" में "यह एक वाक्य है।" ! और "सबसे पहले" में नमस्कार \ ""रेगेक्स वाक्य में पहले शब्द से मिलान करने के लिए

यह काम नहीं करता "सबसे पहले, मैं कहना है \ चाहते हैं":

"""([A-Z].*?(?=^[A-Za-z]))""".r 
+3

रेगेक्स का क्या स्वाद है? –

+0

क्या शब्दों में संख्याएं हो सकती हैं? – endy

+0

'([az] +) ', केस-असंवेदनशील," गैर-मुश्किल "अंग्रेजी के लिए पर्याप्त होना चाहिए .. हालांकि, यह गैर-लैटिन वर्णों के लिए जल्दी से विफल हो जाएगा - इसलिए [यूनिकोड वर्ण वर्गों का उपयोग करें] (http: //stackoverflow.com/a/5005122/166390) उपयुक्त के रूप में! ध्यान दें कि यह एक एनएफए रेगेक्स (रूबी: डी) जैसा मानता है जो "पहली चीज़ से मेल खा सकता है", लेकिन यह यहां पक्ष में काम करता है क्योंकि एंकर या अन्यथा जटिल दिखने की आवश्यकता नहीं है। –

उत्तर

2
[a-z]+ 

यह पर्याप्त होना चाहिए के रूप में यह पहले मिल जाएगा एजी अक्षर (केस-असंवेदनशील मानते हैं)।

मामले में यह काम नहीं करता है, तो आप [a-z]+\b, या ^[a-z]\b भी कोशिश कर सकते हैं, लेकिन पिछले एक मानता है कि स्ट्रिंग शब्द के साथ शुरू होता है।

7
(?:^|(?:[.!?]\s))(\w+) 

प्रत्येक वाक्य में पहले शब्द से मेल खाता है। ^\s*([a-zA-Z0-9]+):

http://rubular.com/r/rJtPbvUEwx

+0

मेरी पोस्ट संपादित की गई। अच्छी पकड़। – endy

+1

"123 यह काम नहीं करता है" क्योंकि यह "123" के बजाय "123" लौटाएगा "यह" – konyak

+0

ऐसा इसलिए है क्योंकि यह पहला शब्द है। ओपी की तरह पूछा था। यदि आप इसे पहले शब्दकोष शब्द से मेल करना चाहते हैं तो आपको किसी अन्य जगह को फिर से देखना चाहिए। – endy

1

आप इस regex का उपयोग कर सकते हैं।

पहला शब्द कैप्चर किए गए समूह में पाया जा सकता है।

1

आप इस रेगेक्स का उपयोग कर सकते हैं: ^[^\s]+ या ^[^ ]+

0

यह एक पुराना धागा है लेकिन लोगों को ऐसा करने की आवश्यकता हो सकती है जैसा मैंने किया था। उपरोक्त में से कोई भी कार्य नहीं करता है यदि आपकी वाक्य एक या अधिक रिक्त स्थान से शुरू होती है। मैं इस किया था वाक्य में पहले (गैर खाली) शब्द पाने के लिए:

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

स्पष्टीकरण: आदेश स्ट्रिंग की शुरुआत के लिए देखने के लिए में

(?<=^[\s"']*) सकारात्मक lookbehind, शून्य या अधिक रिक्त स्थान के द्वारा पीछा किया या विराम चिह्न (आप ब्रैकेट के बीच और जोड़ सकते हैं), लेकिन इसे मैच में शामिल न करें।
(\w+) शब्द के वास्तविक मैच है, जो

वाक्य में निम्नलिखित शब्दों लौटा दी जाएगी मेल नहीं खाते हैं के रूप में वे lookbehind को संतुष्ट नहीं है।

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