मैं एक पाठ फ़ाइल के अंदर एक्सएमएल के एक ब्लॉक की पहचान करने के लिए रेगुलर एक्सप्रेशन का विकास किया है।क्या [ s एस] * क्या अंतर है? तथा ।*? जावा नियमित अभिव्यक्ति में?
<\?xml\s+version="[\d\.]+"\s*\?>\s*<\s*rdf:RDF[^>]*>[\s\S]*?<\s*\/\s*rdf:RDF\s*>
तो मैं यह अनुकूलित और .*?
साथ [\s\S]*?
प्रतिस्थापित यह अचानक एक्सएमएल पहचानने बंद कर दिया: अभिव्यक्ति की तरह इस (मैं हटा दिया है सब जावा भागने उसे आसानी से पढ़ा बनाने के लिए स्लैश) लग रहा है।
जहाँ तक मुझे पता है, \s
सभी सफेद-अंतरिक्ष प्रतीकों का अर्थ है और \S
सभी गैर सफेद से स्थान दिया गया प्रतीकों या [^\s]
तो [\s\S]
तार्किक होना चाहिए .
के बराबर मैं लालची फिल्टर का उपयोग नहीं किया, तो क्या फर्क हो सकता है इसका मतलब है ?
डिफ़ॉल्ट रूप से '.' लाइन विभाजक से मेल नहीं खाता है।यदि आप 'Patter.DOTALL' ध्वज का उपयोग करते हैं तो यह सभी वर्णों (लाइन विभाजक सहित) से मेल खा सकता है। '[\ s \ S] 'सेट है जिसमें सभी व्हाइटस्पेस और सभी गैर-व्हाइटस्पेस \ S शामिल हैं, जो प्रभावी रूप से सभी वर्णों (लाइन विभाजक सहित) का प्रतिनिधित्व करते हैं। – Pshemo
पिछला? दोनों मामलों में कुछ भी योगदान नहीं करता है। – EJP
एक बहुत संबंधित एक: [* इन RegEx *] (http://stackoverflow.com/a/14648811/3832970) –