JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ باقاعده اظهار
terranum
سطح
Milan

جاوا ۾ باقاعده اظهار

گروپ ۾ شايع ٿيل
RegExباقاعده اظهار هڪ قسم جو نمونو آهي جيڪو متن تي لاڳو ڪري سگهجي ٿو (String، Java ۾). جاوا مهيا ڪري ٿو java.util.regex پيڪيج باقاعده اظهار سان ملائڻ لاءِ. ريگيولر ايڪسپريس پرل پروگرامنگ ٻولي سان تمام ملندڙ جلندڙ آهن ۽ سکڻ ۾ تمام آسان آهن. هڪ باقاعده اظهار يا ته متن سان ملندو آهي (ان جو حصو) يا نه. * جيڪڏهن هڪ باقاعده اظهار متن جي هڪ ٽڪرا سان ملندو آهي، پوء اسان ان کي ڳولي سگهون ٿا. ** جيڪڏهن ريگولر ايڪسپريشن مرڪب آهي ته پوءِ اسان آساني سان اندازو لڳائي سگهون ٿا ته ريگولر ايڪسپريشن جو ڪهڙو حصو متن جي ڪهڙي حصي سان ملندو آهي.

پهريون مثال

باقاعده اظهار " [a-z] +" متن ۾ سڀني ننڍن اکرن سان ملندو آهي. [a-z]معنيٰ ڪنهن به ڪردار کان شامل ڪرڻ aتائين z، ۽ +مطلب آهي ”هڪ يا وڌيڪ“ اکر. اچو ته فرض ڪريون ته ”ڪوڊ 2 سکيا جاوا ٽيوٽوريل“ اسٽرنگ فراهم ڪريون ٿا. جاوا ۾ اهو ڪيئن ڪجي پهريون، توهان کي هڪ ٽيمپليٽ ٺاهڻ گهرجي:
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
اڳيون توھان کي ٺاھيو آھي matcherمتن لاءِ ڊاگرام تي پيغام موڪلڻ سان:
Matcher m = p.matcher(“code 2 learn java tutorial”);
نوٽ: نه ته تعمير ڪندڙ آهن Pattern، Matcherاسان انهن کي طبقاتي طريقن سان ٺاهيندا آهيون Pattern. Pattern Class:طبقاتي اعتراض هڪ باقاعده اظهار جي نمائندگي ڪري ٿو. پيٽرن ڪلاس ڪو به عوامي تعمير ڪندڙ مهيا نٿو ڪري. ٽيمپليٽ ٺاھڻ لاءِ، توھان کي پھرين عوامي جامد طريقن مان ھڪڙي کي سڏڻ گھرجي، جيڪو پوءِ ڪلاس جي ھڪڙي شئي کي واپس ڪري Pattern. اهي طريقا هڪ دليل جي طور تي هڪ باقاعده اظهار وٺن ٿا. Matcher Class:Finder اعتراض هڪ انجڻ آهي جيڪو نموني جي تشريح ڪري ٿو ۽ ان پٽ اسٽرنگ تي ملندڙ عملن کي انجام ڏئي ٿو. Patternهڪ طبقي وانگر ، Matcherان ۾ ڪوبه عوامي تعمير ڪندڙ ناهي. توھان حاصل ڪريو ھڪڙي اعتراض کي Matcherڪال ڪندي ھڪڙي طريقي سان matcherھڪڙي طبقي اعتراض تي Pattern. هڪ دفعو اسان انهن مرحلن کي مڪمل ڪيو، ۽ هاڻي اسان وٽ ڪلاس جو هڪ مثال آهي Matcher m ، اسان هاڻي چيڪ ڪري سگهون ٿا ته ڇا نمونو مليو يا نه، ۽ جيڪڏهن ائين آهي، ڪهڙي پوزيشن تي، وغيره. m.matches()واپسي صحيح آھي جيڪڏھن نمونو پوري اسٽرنگ سان ملندو آھي، ٻي صورت ۾ غلط. m.lookingAt()واپسي صحيح آھي جيڪڏھن نمونو اسٽرنگ جي شروعات سان ملندو آھي، ٻي صورت ۾ غلط. m.find ()واپسي صحيح آهي جيڪڏهن نمونو متن جي ڪنهن به حصي سان ملندو آهي.

ملهه ڳولڻ

ڪامياب ميچ کان پوءِ، m.start() انڊيڪس واپس ڪندو پھرئين اکر جو ملايو ۽ m.end() ملندڙ آخري اکر جي انڊيڪس واپس ڪندو، گڏوگڏ ھڪڙو. جيڪڏهن هڪ ناڪام ڪوشش ڪئي وئي ۽ ڪو به ميچ نه مليو، m.start()اهي m.end()اڇلائي ڇڏينداIllegalStateException
  • اهو آهي RuntimeExceptionتنهنڪري توهان کي پڪڙڻ جي ضرورت ناهي.
آخري ملندڙ ڪردار پلس ون جي انڊيڪس کي واپس ڪرڻ عجيب لڳي سگھي ٿو m.end()، پر بلڪل ائين ئي آھي String.
  • مثال طور،“Now is the time“.substring(m.start(), m.end())
ساڳي تار واپس ڪندو. اچو ته ڪوڊ تي هڪ نظر رکون:
import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}
Output: code*learn*java*tutorial*

اضافي طريقا

جيڪڏهن هڪ ميچ آهي، پوء:
  • m.replaceFirst(replacement)ھڪڙو نئون اسٽرنگ موٽائي ٿو، جتي پھريون سبسٽنگ جيڪو نموني سان ملندو آھي ان سان تبديل ڪيو ويندوreplacement
  • m.replaceAll(replacement)ھڪڙو نئون اسٽرنگ موٽائي ٿو، جتي ھر ھڪڙي سبسٽنگ جيڪا نموني سان ملائي ٿي، تبديل ڪئي ويندي
  • m.find(StartIndex)ڳولھيو ايندڙ ميچ کي مقرر ڪيل انڊيڪس تي شروع ڪندي
  • m.reset()ٽيمپليٽ کي ري سيٽ ڪري ٿو
  • m.reset(NewText)ڳوليندڙ کي ري سيٽ ڪري ٿو، ۽ ان کي نئون متن ڏئي ٿو (شايد String، StringBufferيا CharBuffer)

باقاعده اظهار نحو

  • ^هڪ لڪير جي شروعات سان ملائي ٿو.
  • $تار جي آخر سان ملائي ٿو.
  • .نئين لائن کان سواءِ ڪنهن به هڪ ڪردار سان ملندو آهي. m آپشن استعمال ڪندي ان کي نئين لائين سان ملائڻ جي اجازت ڏئي ٿي.
  • [...]قوس ۾ ڪنهن به هڪ اکرن کي ملائي ٿو.
  • [^ ...]ڪنهن به اکرن سان ملائي ٿو جيڪو قوس ۾ نه آهي.
  • \Aسڄي لائن شروع ڪريو.
  • \zسڄي لائن جي پڄاڻي.
  • \Zآخري لائين ٽرمينيٽر کان سواءِ پوري لڪير جي پڇاڙي.
  • re*اڳئين اظهار جي 0 يا وڌيڪ واقعن سان ملائي ٿو.
  • re+پوئين اظهار جو هڪ يا وڌيڪ ميلاپ.
  • re?ملائي ٿو 0 يا 1 پوئين ايڪسپريس جي جڳھ سان.
  • re{n}بلڪل ملي ٿو N اڳئين اظهار جي واقعن جو تعداد.
  • re{n,}اڳئين اظهار جي N يا وڌيڪ واقعن سان ملن ٿا.
  • re{n, m}اڳئين اظهار جي گهٽ ۾ گهٽ n ۽ سڀ کان وڌيڪ m واقعن سان ملندو آهي.
  • a|bالف يا ب سان ملندو آهي.
  • (re)باقاعده اظهار جو هڪ گروپ ۽ مليل متن کي ياد ڪرڻ.
  • (?: re)باقاعده اظهار جا گروپ جيڪي مليل متن کي ياد نٿا ڪن.
  • (?> re)هڪ آزاد نموني سان ملي ٿو بغير واپسي سان.
  • \wاکرن ۽ انگن سان ملائي ٿو [a-zA-Z_0-9].
  • \Wاهي اکر يا انگ نه آهن.
  • \sجڳهيون ملن ٿيون. برابر [\t\n\r\f].
  • \Sنه وائيٽ اسپيس اکر.
  • \dانگن سان ملائي ٿو. جي برابر [0-9].
  • \Dانگن سان ملندو نه آهي.
  • \Gآخري ميچ جي پوائنٽ سان ملائي ٿو.
  • \nنئين لائن سان ملن ٿا.
  • \bهڪ لفظ جي حد تي ملندو آهي.
  • \Bملن لفظن جي حد تي نه.
  • \n, \t, etc.نيو لائن، گاڏي واپسي، ٽيب، وغيره اکر.
  • \Qسڀني اکرن جو حوالو ڏيو \E کان اڳ.
  • \Eاقتباس شروع ٿي \Q سان ختم ٿيو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION