2011-09-23 16 views
11

प्रलेखन कहता है कि व्हाइट्स स्पेस है और \ एस सफेद जगह नहीं है। अब तक, regex उपयोगकर्ताओं को कुछ नया नहीं है। \ एक चरित्र वर्ग में इस्तेमाल किया जा सकतापोस्टग्रेस रेगेक्स: s और S और चरित्र वर्ग का व्यवहार गलत लगता है

SELECT SUBSTRING('abc a c' FROM 'a\\sc'); 
'a c' 

SELECT SUBSTRING('abc a c' FROM 'a[\\s]c'); -- Note the character class 
'a c' 

SELECT SUBSTRING('abc a c' FROM 'a\\Sc'); 
'abc' 

SELECT SUBSTRING('abc a c' FROM 'a[\\S]c'); -- Note the character class 
ERROR: invalid regular expression: invalid escape \ sequence 

तो ऐसा लगता है, और \ एस नहीं कर सकते हैं:

लेकिन कुछ वापसी मूल्यों की जाँच करते हैं। क्यूं कर?

उत्तर

8

the manual से:

ब्रैकेट भाव के भीतर, \ घ, \, और \ w उनके बाहरी कोष्ठक, और \ डी, \ एस खो देते हैं, और \ डब्ल्यू अवैध हैं।

किसी भी मामले में, कोष्ठक \s और \S खुद को चरित्र वर्ग हैं के बाद से अनावश्यक लगते हैं।

निम्न सिंटैक्स a[\\S]c के लिए एक विकल्प के रूप में मेरे लिए काम करता है:

SELECT SUBSTRING('abc a c' FROM 'a[^[:space:]]c'); 
+0

Thx, मैं इस अनदेखी की। बीटीडब्ल्यू, निश्चित रूप से ब्रैकेट मेरे सरलीकृत उदाहरण कोड में अनावश्यक हैं। – Leif

+0

वे अवैध हैं क्योंकि 'एक [^ \ s] सी' अस्वीकृति के लिए ठीक काम करता है। – hhaamu

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