जवाबों:
आप एक चरित्र वर्ग का उपयोग कर सकते हैं :
/[^\s\\]/
ऐसी किसी भी चीज़ से मेल खाता है जो न तो व्हाट्सएप चरित्र है और न ही ए \
। यहाँ एक और उदाहरण है:
[abc]
"मैच a
, b
या c
" का अर्थ है ; [^abc]
का अर्थ है "किसी भी चरित्र को छोड़कर a
, b
या c
"।
$0~/\s*^\s/
वर्णों के साथ शुरू होती है जो किसी भी वर्ण के बाद होती है जो कि सफेद रिक्त स्थान नहीं है
/^\s+/
- लाइन की शुरुआत, उसके बाद एक या अधिक व्हाट्सएप वर्ण।
g
संशोधक में जोड़ा जाए । /[^\s\\]/g
आप एक लुकहेड का उपयोग कर सकते हैं:
/(?=\S)[^\\]/
/(?=\S)\W/
THIS IS A TEST, AND AGAIN
। निम्नलिखित ने मेरे लिए अच्छा काम किया (?=\S)[^"]*
।
इसने मेरे लिए sed का उपयोग करके काम किया [ संपादित करें: नीचे दिए गए बिंदुओं पर टिप्पणी करें sed से समर्थन नहीं करता है]
[^ ]
जबकि
[^\s]
नहीं था
# Delete everything except space and 'g'
echo "ghai ghai" | sed "s/[^\sg]//g"
gg
echo "ghai ghai" | sed "s/[^ g]//g"
g g
\s
अंतरिक्ष चरित्र से अधिक मेल खाता है। इसमें टीएबी, लाइनफीड कैरिज रिटर्न, और अन्य ( कितने अन्य रीगेक्स स्वाद पर निर्भर करता है) शामिल हैं। यह एक पर्ल आविष्कार है, मूल रूप से POSIX वर्ण वर्ग के लिए एक आशुलिपि है [:space:]
, और इसमें समर्थित नहीं है sed
। आपका पहला रेगेक्स ऊपर होना चाहिए s/[^[:space:]g]//g
।
echo "ghai ghai" | sed "s/[^[:space:]g]//g"
पैदावार:g g
मेरे सिस्टम पर: CentOS 5
मैं \s
संग्रह के बाहर उपयोग कर सकते हैं, लेकिन संग्रह के [:space:]
अंदर का उपयोग करना है। वास्तव में मैं [:space:]
केवल संग्रह के अंदर ही उपयोग कर सकता हूं । तो इसका उपयोग करने के लिए एक ही स्थान से मिलान करने के लिए मुझे उपयोग करना होगा [[:space:]]
जो वास्तव में अजीब है।
echo a b cX | sed -r "s/(a\sb[[:space:]]c[^[:space:]])/Result: \1/"
Result: a b cX
\s
[[:space:]]
[^[:space:]]
ये दोनों काम नहीं करेंगे:
a[:space:]b instead use a\sb or a[[:space:]]b
a[^\s]b instead use a[^[:space:]]b
([^[:space:]])
इसके बजाय उपयोग करना है ([^\s])
। मैं
^
नकार के रूप में कब व्याख्या की जाती है और कब से शुरुआत होती है? इस संबंध में, यह अभ्यस्त क्यों सफेद स्थानों की संख्या के साथ शुरू होने वाली रेखा से मेल खाता है$0~/\s*^\s/