नियमित अभिव्यक्ति: रिक्त स्थान (टैब्स / स्पेस) खोजें, लेकिन newlines नहीं


96

मेरे पास एक नियमित अभिव्यक्ति कैसे हो सकती है जो रिक्त स्थान या टैब के लिए परीक्षण करती है, लेकिन नई रूपरेखा नहीं। मैंने कोशिश की, \sलेकिन यह पता चला कि यह newlines के लिए भी परीक्षण करता है।

मैं C # / WPF का उपयोग करता हूं, लेकिन यह मायने नहीं रखता।

जवाबों:


189

चरित्र वर्ग का उपयोग करें: [ \t]


1
मेरी समस्या के लिए हाजिर रहें। Perl-only वर्ण वर्ग के लिए भी stackoverflow.com/a/25956935/292060 देखें \h, लेकिन यह दिखाता है कि कई अन्य व्हाट्सएप आकर्षण हैं, यदि आपको उन्हें यहां सूची में जोड़ने की आवश्यकता है।
गोयडे go

3
पहले एक जगह क्यों होनी चाहिए \t?
21

4
@ जोकर को शाब्दिक स्थान पर कब्जा करने के लिए
कोडोमेंकी

यह अन्य प्रकार के रिक्त स्थान से मेल नहीं खाएगा, जैसा कि अन्य उत्तरों ने उल्लेख किया है।
गस

1
\ T से पहले कोई स्थान क्यों?
1919

35

इस चरित्र सेट का प्रयास करें:

[ \t]

यह केवल एक स्थान या सारणी से मेल खाता है।


14

जैसा कि @ Eiríkr Útlendi ने कहा, स्वीकृत समाधान केवल दो सफेद अंतरिक्ष वर्ण मानता है: क्षैतिज टैब (U + 0009), और एक ब्रेकिंग स्पेस (U + 0020)। यह अन्य व्हाट्सएप पात्रों पर विचार नहीं करता है जैसे कि गैर-ब्रेकिंग रिक्त स्थान (जो पाठ में होने वाला है जिससे मैं निपटने की कोशिश कर रहा हूं)। एक अधिक संपूर्ण व्हाट्सएप चरित्र सूचीकरण को विकिपीडिया पर शामिल किया गया है और लिंक किए गए पर्ल उत्तर में भी संदर्भित किया गया है । एक साधारण सी # समाधान जो इन अन्य वर्णों के लिए खाता बनाया जाता है, चरित्र वर्ग घटाव का उपयोग करके बनाया जा सकता है

[\s-[\r\n]]

या, Eiríkr ltlendi के समाधान सहित, आपको मिलता है

[\s\u3000-[\r\n]]

3

नोट: CJK पाठ (चीनी, जापानी और कोरियाई) के साथ काम करने वालों के लिए, डबल-बाइट स्पेस (यूनिकोड \u3000) किसी भी कार्यान्वयन के लिए शामिल नहीं है जो \sमैंने अब तक की कोशिश की है (पर्ल, .NET, पीसीआरई, पायथन)। आपको या तो पहले अपने स्ट्रिंग्स को सामान्य करने की आवश्यकता होगी (जैसे कि सभी के \u3000साथ बदलकर \u0020), या आपको एक वर्ण सेट का उपयोग करना होगा जिसमें इस कोड बिंदु के अलावा जो भी आप लक्षित कर रहे हैं, जैसे कि अन्य व्हाट्सएप शामिल हैं [ \t\u3000]

यदि आप पर्ल या पीसीआरई का उपयोग कर रहे हैं, तो आपके पास क्षैतिज\h व्हाट्सएप के लिए आशुलिपि का उपयोग करने का विकल्प है , जो एकल-बाइट स्थान, डबल-बाइट स्थान, और टैब, अन्य के साथ शामिल करने के लिए प्रकट होता है। मैच व्हाट्सएप देखें लेकिन अधिक विवरण के लिए नए लिंक (पर्ल) धागा नहीं

हालाँकि, यह \hशॉर्टहैंड .NET और C # के लिए लागू नहीं किया गया है, क्योंकि सबसे अच्छा मैं बता पा रहा हूं।


1
अच्छी बात। जावा का \h(जावा 8 में पेश किया गया) शामिल नहीं है \u3000, लेकिन \sजब तक आप UNICODE_CHARACTER_CLASS मोड (जावा 7 में पेश) सेट नहीं करते।
एलन मूर

0

यदि आप नीचे दिए गए स्थान को बदलना चाहते हैं तो मेरे लिए काम किया गया कोडC#

Regex.Replace(Line,"\\\s","");

टैब के लिए

Regex.Replace(Line,"\\\s\\\s","");

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.