regex - Java - issue when getting the value between two # # signs (matcher-pattern) -
मेरे पास उदाहरण फ़ील्ड के साथ मूल्य है
स्ट्रिंग a = "आइटम: # 1000 # , # 2000 # ";
जिसके लिए मैंने सफलतापूर्वक 1000 और 2000 मान प्राप्त करने के लिए तर्क विकसित किया है।
पैटर्न p = pattern.compile ("\\ # (। *? ) \\ # "); मैचर एम = पी। मेटचर (ए); जबकि (m.find ()) {System.out.println (m.group (1)); }
यह ठीक काम करता है!
लेकिन मेरे पास कुछ मानों के साथ मुद्दा है जिसे केवल एक # साइन इन और उस डबल के बाद ध्यान में नहीं रखना चाहिए ## संकेत। उदाहरण के लिए:
स्ट्रिंग a = "आइटम: # 1 # 1000 #, # 2000 #";
यह मान 1 को ध्यान में नहीं लिया जाना चाहिए !!!! लेकिन मेरा कोड इस मामले में 1
और ,
देता है जो अच्छा नहीं है, इसे फिर से 1000
और 2000
< / P>
क्या यह संभव है कि मूल्य को केवल एक # के साथ अनदेखा करना है? दुर्भाग्य से मेरे पास कई # $ संकेतों के साथ कई मान हैं? मान हमेशा ##
और कोमा
#
से घिरे हुए तारों पर मेल खाएंगे और उसके बाद एक अल्पविराम या स्ट्रिंग के अंत में होगा: Pattern p = Pattern.compile (" # ([^ #] *) # (= (, | $)?) ");
यदि आप पर मिलान करना चाहते हैं, तो उदाहरण के लिए, नए अक्षरों को भी, अंतिम ब्रैकेट में (और बाद में ? =
) अधिक वर्ण जोड़ सकते हैं।
मैंने इसे जावा में परीक्षण नहीं किया, केवल नोटपैड ++ में, लेकिन दोनों एक ही regex एल्गोरिदम का उपयोग करते हैं।
Comments
Post a Comment