मेरे पास कुछ जटिल नियमित अभिव्यक्तियां हैं जिन्हें मुझे पठनीयता और रखरखाव के लिए टिप्पणी करने की आवश्यकता है। जावा स्पेक बदले में है और मैं इस काम को प्राप्त करने में काफी समय से संघर्ष कर रहा हूं। मैं अंत में मेरी बग पकड़ लिया और एक जवाब के रूप में यह पोस्ट करेंगे, लेकिन मैं बनाए रखने regexesजावा नियमित अभिव्यक्तियों में टिप्पणियां सहित
एक उदाहरण मैं एक साधारण नाम पार्सर में उप-घटक (पैटर्न के) टिप्पणी करना चाहते हैं के रूप में किसी भी अन्य सलाह के लिए आभारी होगी:
String testTarget = "Waldorf T. Flywheel";
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.)?\\s+([A-Za-z]+)";
Pattern pattern = Pattern.compile(patternS, Pattern.COMMENTS);
Assert.assertTrue(pattern.matcher(testTarget).matches());
संपादित करें: मैं (? X) प्रारूप के उदाहरणों के लिए भी आभारी रहूंगा।
संपादित करें: @ geowa4 में एक अच्छा सुझाव है जो एम्बेडेड टिप्पणियों से बचाता है। सिन्स जावा और अन्य ने एम्बेडेड टिप्पणियों के लिए प्रदान किया है, वे मामले क्या हैं जहां वे उपयोगी हैं? (मुझे लगता है कि मेरे पास एक मामला है लेकिन मुझे दूसरों को देखने में दिलचस्पी होगी)।
संपादित करें: नीचे @mikej regex वैकल्पिक प्रारंभिक अच्छी तरह से समर्थन नहीं करता है और हो सकता है बताया गया है के रूप में बेहतर:
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.\\s+)?([A-Za-z]+)";
लेकिन यह है कि प्रारंभिक
धन्यवाद - यह एक उपयोगी दृष्टिकोण है। यह regexes उत्पन्न करने के लिए डोमेन विशिष्ट भाषाओं का उपयोग करने के एक और विचार की ओर इशारा करता है (http://flimflan.com/blog/ReadableRegularExpressions.aspx)। (यह वास्तव में मैं अपने आवेदन में करता हूं जिसमें वैज्ञानिक डेटा के लिए compsed regexes के जटिल संयोजन हैं लेकिन यह इस प्रश्न के दायरे से बाहर है)। –
यह एक बहुत साफ और साफ समाधान है। यद्यपि वैकल्पिक WhiteSpace शायद अनिवार्य होना चाहिए WiteSpace? :) – crunchdog
धन्यवाद crunchdog। मुझे लगता है कि मुझे क्या पकड़ा गया है वास्तव में ओपी में पैटर्न में एक सीमा है कि अगर हमारे पास फ्रेड ब्लॉग्स जैसे मध्य प्रारंभिक नाम के बिना कोई नाम है तो हमें दो नामों के मिलान के लिए पहले नाम और उपनाम के बीच 2 रिक्त स्थान की आवश्यकता है \ पैटर्न में \ s +। मैं इसे संबोधित करने की कोशिश कर रहा था लेकिन अभी के लिए मैंने ओपी में एक के बराबर पैटर्न बनाने के लिए जवाब संपादित किया है। – mikej