में पिछले मिलान किए गए समूहों के संदर्भ में मैं एंड्रॉइड कोडिंग के लिए नया हूं, लेकिन मुझे पर्ल रेगेक्स के साथ अनुभव है। (\ W \ घ \ घ \ घ) एंड्रॉयड कोड यह होगा के लिएरेगेक्स
^\s*((\w\d\d\d)(\s+$2)*)?$
नोट $ 2 पिछले मिलान किया समूह को संदर्भित करता: मैं एक नियमित की तरह अभिव्यक्ति के साथ 0 या अधिक पहचानकर्ता की एक सूची मिलान करने की आवश्यकता देखो की तरह:
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+\$2)*)?$")
ग्रहण संकलक \ $ 2 संकलन नहीं करता है, मैं भी \ 2 की कोशिश की है, जो संकलित लेकिन एक शाब्दिक संख्या 2.
जानवर बल समाधान मैच के लिए पहचानकर्ता को दोहराने के लिए किया जाएगा की कोशिश करता है पैटर्न:
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+(\\w\\d\\d\\d))*)?$")
यह काम करता है, लेकिन यह निम्न नुकसान हैं: * यह या तो पुनरावृत्ति में एक सिंटैक्स त्रुटि बनाने के लिए * पहचानकर्ता और अधिक जटिल स्ट्रिंग बड़ा * यह सुरुचिपूर्ण नहीं है हो जाता हो जाता है के रूप में आसान है * यदि आपको किसी को संदर्भित करने की आवश्यकता नहीं है तो बहुत अधिक जटिल हो जाता है लेकिन कई पिछले मैचों
क्या रीगिक्स के भीतर पिछले मिलान किए गए समूहों को संदर्भित करने के लिए जावा में कोई तरीका है?
क्या आपने 'Pattern.compile ("^\\ s * ((\\ w \\ d \\ d \\ d) (\\ s + \\ 2) *)? $ ") की कोशिश की है, मुझे लगता है कि बैकरेफर \ N जहां एन आपका समूह है। यद्यपि आपको बैकस्लैश को '\\ एन' –
के साथ बैकस्लैश करना है, हां, मेरे पास है, यह \\ 2 को शाब्दिक संख्या 2 के रूप में लेता है (मैं मूल पोस्ट में बैकस्लैश को दोगुना करना भूल गया था, लेकिन यह मेरा मतलब था)। – ilomambo