क्या एक चरित्र वर्ग में मिलान किए गए चरित्र को घटा देना संभव है?पैटर्न: चरित्र वर्ग में मिलान किए गए चरित्र को कैसे घटाया जाए?
Java docs घटाव के साथ चरित्र वर्गों के बारे में उदाहरण कर रहे हैं:
1) "aaaa123" - should NOT match
2) "aabb123" - should match "aabb" part
3) "aa--123" - should NOT match
मैं:
[a-z&&[^bc]] - a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]] - a through z, and not m through p: [a-lq-z](subtraction)
मैं पैटर्न है, जो शब्द पात्रों के दो जोड़े से मेल खाता है, जब जोड़े ही नहीं हैं लिखना चाहते हैं निम्नलिखित पैटर्न के साथ सफलता के करीब हूं:
([\w])\1([\w])\2
लेकिन निश्चित रूप से यह 1 मामले में काम नहीं करता है, इसलिए मुझे पहले समूह के मैच को घटाना होगा। लेकिन जब मैं यह करने के लिए प्रयास करें:
Pattern p = Pattern.compile("([\\w])\\1([\\w&&[^\\1]])\\2");
मैं एक अपवाद हो रही है:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 17
([\w])\1([\w&&[^\1]])\2
^
at java.util.regex.Pattern.error(Pattern.java:1713)
तो यह समूहों के साथ काम नहीं करता है, लेकिन सिर्फ विशिष्ट वर्ण लिस्टिंग के साथ लगता है। बिना किसी समस्या के पैटर्न के संकलन:
Pattern p = Pattern.compile("([\\w])\\1([\\w&&[^a]])\\2");
क्या इस तरह के पैटर्न लिखने का कोई और तरीका है?
रेगुलर एक्सप्रेशन वास्तव में एक शांत लग पड़ता है: http: // xkcd।कॉम/208/ – flesk
@ किलियन: यह पैटर्न स्ट्रिंग भागों से मिलान करने के लिए बहुत से लोगों में से एक है (बहुत सरल हैं) - इसलिए यह केवल "शांत" होने के लिए नहीं है जैसा कि आप कहते हैं - सिस्टम पैटर्न के माध्यम से पुनरावृत्त करता है और उनसे मेल खाता है। .. अगर मैं आपके सुझाए गए तरीके से जाऊंगा - मेरे पास यह और भी "अनकॉल" समाधान होगा क्योंकि मुझे एक या किसी अन्य मामले के लिए कस्टम 'ifs' जोड़ने की आवश्यकता होगी ... – Laimoncijus
@flesk: बहुत अच्छा, मेरे द्वारा +1 ! :) – Laimoncijus