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>

क्या यह संभव है कि मूल्य को केवल एक # के साथ अनदेखा करना है? दुर्भाग्य से मेरे पास कई # $ संकेतों के साथ कई मान हैं? मान हमेशा ## और कोमा

< P> निम्नलिखित पैटर्न केवल # से घिरे हुए तारों पर मेल खाएंगे और उसके बाद एक अल्पविराम या स्ट्रिंग के अंत में होगा:

  Pattern p = Pattern.compile (" # ([^ #] *) # (= (, | $)?) ");  

यदि आप पर मिलान करना चाहते हैं, तो उदाहरण के लिए, नए अक्षरों को भी, अंतिम ब्रैकेट में (और बाद में ? = ) अधिक वर्ण जोड़ सकते हैं।

मैंने इसे जावा में परीक्षण नहीं किया, केवल नोटपैड ++ में, लेकिन दोनों एक ही regex एल्गोरिदम का उपयोग करते हैं।


Comments

Popular posts from this blog

winforms - C# Form - Property Change -

java - Messages from .properties file do not display UTF-8 characters -

javascript - amcharts makechart not working -