2015-03-23 4 views
21

क्या कोई बता सकता है कि MATLAB नियमित अभिव्यक्तियों में नल बाइट्स (x00) के साथ क्या कर रहा है?regexp में nul बाइट्स MATLAB

उदाहरण:

>> regexp(char([0 0 0 0 0 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10])) 
ans = 
     1 % current 
     4 % expected 

>> regexp(char([0 0 0 1 0 0 0 1 0 0 10 0 0 0]),char([1 0 0 0 46 0 0 10])) 
ans = 
     4 % current 
     4 % expected 

>> regexp(char([0 0 0 1 0 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10])) 
ans = 
     [] % current 
     [] % expected 

>> regexp(char([0 0 0 0 10 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10])) 
ans = 
     1 % current 
     [] % expected 

>> regexp(char([0 0 0 0 0 0 0 1 0 0 10 0 0 0]),char([1 0 0 0 46 0 0 10])) 
ans = 
     [] % current 
     [] % expected 

जवाब बस हो सकता है, MATLAB नियमित अभिव्यक्ति गैर मुद्रण योग्य पात्रों को संभालने के लिए मतलब नहीं है, लेकिन मैं कहीं ऐसा तो नहीं था यह त्रुटि होगा ग्रहण करेंगे।

संपादित करें: 46 रेगेक्स वाइल्डकार्ड में '.' होने की उम्मीद है।

EDIT2:

>> regexp(char([0 0 0 0 50 0 0 100 0 0 90 0 0 0]),char([0 0 46 0 0 90])) 
ans = 
    1 9 

मैं यह महसूस हो सकता था 10 विशेष वर्ण जा रहा है तो यह एक ही प्रिंट करने योग्य और नुल बाइट्स है। मैं उम्मीद करता हूं कि यह केवल 9 से मेल खाता है क्योंकि पांचवां चरित्र 500 से मेल नहीं खाता है।

+0

क्यों आप अपनी पहली उम्मीद करते हैं मैं कई संस्करण में मैटलैब सेंट्रल से अपने उदाहरण का परीक्षण किया '4' और आपके चौथे उदाहरण को वापस करने के लिए उदाहरण '[]' वापस करने के लिए? वे मुझे समझ में लगते हैं। पहले मामले में, पैटर्न 'नूल नुल नुल नूल। स्ट्रिंग की शुरुआत में एनयूएल एनयूएल 'एनयूएल नुल नुल नुल नुल नुल' से मेल खाएगा। – eigenchris

+0

@eigenchris मुझे लगता है कि यह केवल 4 से मेल खाता है क्योंकि पैटर्न के अंत में 10 में से दोनों मामलों में 1 से मेल नहीं खाते हैं, है ना? – horriblyUnpythonic

+0

आप सही हैं। न्यूलाइन कैरेक्टर जिस तरह से मैंने पहली बार उम्मीद की थी, उससे व्यवहार नहीं कर रहा था। अब तक यह मुझे भी stumped है। – eigenchris

उत्तर

1

यह बग शायद पहले ही तय हो चुका है।

R2013b में

:

>> regexp(char([0 0 1 0 41 41 41 41 41 41]),char([0 '.' 0 40 40 40 40]))  
ans = 

    2 
R2015a में

:

>> regexp(char([0 0 1 0 41 41 41 41 41 41]),char([0 '.' 0 40 40 40 40])) 
ans = 

    2 
R2016a में

:

>> regexp(char([0 0 1 0 41 41 41 41 41 41]),char([0 '.' 0 40 40 40 40])) 
ans = 

    []