2010-03-23 19 views
7

मुझे पता है कि मेरे जैसे पहले से ही कई प्रश्न हैं लेकिन मुझे कोई जवाब नहीं मिला जो जावा में काम करता है। तो मैं एक नया सवाल लिखता हूं।बच निकलने वाले उद्धरणों के साथ उद्धृत स्ट्रिंग से मेल खाने के लिए जावा रेगेक्स

मैं इस तरह की सामग्री के साथ पाठ फ़ाइलें है:

 
key1 = "This is a \"test\" text with escapes using '\\' characters"; 
key2 = 'It must work with \'single\' quotes and "double" quotes'; 

मैं रेगुलर एक्सप्रेशन जो डबल उद्धरण (या एकल उद्धरण) में मूल्यों से मेल खाता है की जरूरत है। इस नियमित अभिव्यक्ति को बच निकले उद्धरणों का समर्थन करना चाहिए और बैकस्लाश से बच निकलना चाहिए। नियमित अभिव्यक्ति जावा मानक पैटर्न/Matcher कक्षाओं के साथ काम करना चाहिए।

+0

निकट से संबंधित, उपयोगी हो सकता है: http://stackoverflow.com/questions/263985/regex-question -एक-या-अधिक-रिक्त स्थान-बाहर-एक-उद्धरण-संलग्न-ब्लॉक-ऑफ-टेक्स्ट –

उत्तर

8

इस नियमित अभिव्यक्ति का प्रयास करें:

'([^\\']+|\\([btnfr"'\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*'|"([^\\"]+|\\([btnfr"'\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*" 

और एक स्ट्रिंग शाब्दिक रूप में:

"'([^\\\\']+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*'|\"([^\\\\\"]+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*\"" 
+1

अब तक काम करने लगता है, धन्यवाद। – kayahr

+0

क्रिक, यह एक रेगेक्स डेढ़ है। क्या आप अभी इसके साथ आए हैं, या यह कुछ ऐसा है जो आपने समय के लिए उपयोग किया है? (उदाहरण के लिए, आप कितनी अच्छी तरह से परीक्षण करेंगे?) –

+0

@OP: ऐसा लगता है कि यह जावा स्ट्रिंग्स और इसी तरह की प्रक्रिया को संसाधित करने के लिए तैयार है (यह उदाहरण के लिए यूनिकोड से बचता है \ n1234', और सामान्य जावा 'f' , '\ t' और ऐसे)। बस इसका जिक्र करते हुए कि आपका स्रोत डेटा उस से थोड़ा अलग है, क्योंकि आपने वास्तव में यह नहीं कहा था कि तार जावा शैली में थे, बस उन्हें बैकस्लैश-एस्केक्ड कोट्स और बैकस्लाश हो सकते हैं। असल में, यह मुझे लगता है जैसे आपके तार जावास्क्रिप्ट हैं (जिनमें जावा स्ट्रिंग्स के समान ही वाक्यविन्यास है, इसलिए आप शायद ठीक हैं)। –

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

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