JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3
articles
سطح

جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3

گروپ ۾ شايع ٿيل
اچو ته باقاعده اظهار جو مطالعو جاري رکون. هن آرٽيڪل ۾ اسين اڳواٽ بيان ڪيل ڪردارن جي طبقن سان گڏوگڏ مقدار جي مقدار کي ڏسندا سين (سلسلن جي ڳولا). جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 1

اڳواٽ بيان ڪيل ڪردار جا ڪلاس

ڪلاس API Pattern۾ اڳواٽ بيان ڪيل ڪردار ڪلاس شامل آهن جيڪي عام طور تي استعمال ٿيندڙ باقاعده اظهار لاءِ آسان شارٽ ڪٽ پيش ڪن ٿا. جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 2ھن جدول ۾، کاٻي ڪالم ۾ ٺھيل آھن ساڄي ڪالمن ۾ اظهار جي مختصر ھٿ جي نمائندگي. مثال طور، \dهڪ نمبر جو مطلب آهي (0-9)، \wمطلب ته ڪو به وڏو يا ننڍو اکر، هيٺيون يا نمبر). جڏهن به ممڪن هجي اڳواٽ بيان ڪيل ڪردار ڪلاس استعمال ڪريو. اهو توهان جي ڪوڊ کي پڙهڻ ۽ غلطين کي درست ڪرڻ آسان بڻائي ڇڏيندو. بيڪ سليش سان شروع ٿيندڙ تعميرات کي فرار يا محفوظ سڏيو ويندو آهي. پوئين مضمونن ۾، اسان اڳ ۾ ئي خاص ڪردارن کي پٺتي پيل يا علامتن سان فرار ڪرڻ \Q۽ \Eانهن کي باقاعده ڪردارن طور استعمال ڪرڻ بابت ڳالهايو آهي. جيڪڏهن توهان باقاعده اکرن (لفظي) سان هڪ پٺتي سليش استعمال ڪريو ٿا، ته پوء توهان کي گڏ ڪرڻ لاء اظهار لاء بيڪ سليش کان بچڻ جي ضرورت آهي.
private final String REGEX = "\\d"; // цифра
هن مثال ۾ \d، هڪ باقاعده اظهار؛ پروگرام کي گڏ ڪرڻ لاء اضافي پٺتي پيل ضروري آهي. اسان جو ٽيسٽ پروگرام سڌو سنئون ڪنسول مان باقاعده اظهار پڙهي ٿو، تنهنڪري اضافي سليش جي ضرورت ناهي. هيٺيون مثال اڳواٽ بيان ڪيل ڪردار جي طبقن جي استعمال کي ظاهر ڪري ٿو: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 3جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 4پهرين ٽن مثالن ۾، باقاعده اظهار صرف " ." (ڊٽ خاص ڪردار) آهي، جنهن جو مطلب آهي ڪو به ڪردار. تنهن ڪري، ڳولا هر صورت ۾ ڪامياب ٿي. ٻيا مثال اڳواٽ بيان ڪيل ڪردار طبقن کي استعمال ڪن ٿا، جن جي معني اسان مٿي ڏنل جدول ۾ بحث ڪيو آهي.

مقداري

جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 4Quantifiers توهان کي اسٽرنگ ۾ هڪ ڪردار جي واقعن جو تعداد بيان ڪرڻ جي اجازت ڏين ٿا. اچو ته هڪ ويجهڙائي تي نظر رکون ته ڪيئن لالچي، سست، ۽ تمام لالچي مقدار جي ڪم ڪن ٿا. پهرين نظر ۾ اهو لڳي سگھي ٿو ته quantifier X؟, X?? ۽ X؟+ ساڳئي طريقي سان ڪم ڪريو: "X هڪ ڀيرو موجود آهي يا نه. انهن quantifiers جي عمل ۾ ٿورو اختلاف آهن، جنهن کي اسين هيٺ ڏسندا سين.

صفر ڊگھائي ملن ٿا

اچو ته لالچي سان شروع ڪريون. اچو ته ٽي مختلف باقاعده اظهار لکون: خاص اکرن سان "a" اکر؟، * يا +. اچو ته ڏسون ته ڇا ٿيندو جيڪڏهن اسان انهن باقاعده اظهارن کي خالي لڪير تي آزمايو: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 5مٿين مثال ۾، ڳولا پهرين ٻن ڪيسن ۾ ڪامياب ٿي، ڇاڪاڻ ته اظهار a؟ ۽ a* ڪردار a کي تار مان غائب ٿيڻ جي اجازت ڏيو. اهو پڻ نوٽ ڪريو ته شروعات ۽ آخري ميچ انڊيڪس ساڳيا آهن (0). جيئن ته ان پٽ اسٽرنگ جي ڪا ڊگھائي نه آهي، ان ڪري پروگرام ڪجھ به نه ٿو ملي :) پهرين پوزيشن ۾. اهو ڪيس صفر-لمبائي ميچ سڏيو ويندو آهي. اهڙيون ميچون ڪيترن ئي ڪيسن ۾ ٿينديون آهن: جڏهن ان پٽ لائين خالي هجي، ان پٽ لائين جي شروعات ۾، لڪير جي آخري ڪردار کان پوءِ، يا لڪير ۾ ڪردارن جي وچ ۾. زيرو ڊگھائي ميچون آسانيءَ سان ڏسڻ ۾ اچن ٿيون: اھي شروع ۽ ختم ساڳي پوزيشن تي. اچو ته ڏسون ڪجهه وڌيڪ مثالن جي صفر-لمبائي ميچن جا. اچو ته ڪجهه وڌيڪ مثالن سان صفر-لمبائي ميچن کي ڳوليون. اچو ته ان پٽ اسٽرنگ کي ڪردار "a" ۾ تبديل ڪريون ۽ هڪ دلچسپ اثر ڏسو: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 6سڀني ٽن quantifiers ڪردار "a" کي مليو، پر پهريان ٻه، جيڪي هڪ ڪردار جي غير موجودگي جي اجازت ڏين ٿا، پوزيشن 1 تي صفر-لمبائي ميچ مليا. - تار جي آخري ڪردار کان پوء. اهو ٿي سگهي ٿو ڇاڪاڻ ته پروگرام ڪردار "a" کي اسٽرنگ جي طور تي علاج ڪري ٿو ۽ ان جي ذريعي "هلائي ٿو" جيستائين وڌيڪ ميچ نه آهن. استعمال ڪيل مقدار جي بنياد تي، پروگرام سٽ جي آخر ۾ "ڪجھ به" نه ملندو يا نه ملندو. ھاڻي اچو ته ان پٽ اسٽرنگ کي پنجن اکرن جي تسلسل ۾ تبديل ڪريون "a": جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 7Regular expression a؟ سٽ ۾ هر اکر لاءِ الڳ الڳ ملندو. اظهار a* ٻه ميچون ڳولي ٿو: ڪردار جي ترتيب "a"' ۽ هڪ صفر-لمبائي ميچ پوزيشن 5 تي. ۽ آخر ۾، ريگيولر ايڪسپريشن a+ صرف اکرن جي تسلسل کي ڳولي ٿو "a"، بغير "ڪجھ به نه" ڳولڻ جي :) ڇا ٿيندو جيڪڏهن مختلف اکرن تي مشتمل هڪ اسٽرنگ ان پٽ طور ڏنو وڃي؟ مثال طور، "ababaaaab": جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 8ڪردار "b" پوزيشن 1، 3، ۽ 8 ۾ آهي ۽ پروگرام انهن پوزيشن تي صفر-لمبائي ميچ ڳولي ٿو. باقاعده اظهار الف؟ "b" تي ڌيان نه ڏيندو آهي، پر صرف "a" ڪردار جي موجودگي (يا غير موجودگي) کي ڳولي ٿو. جيڪڏهن quantifier "a" جي غير موجودگي جي اجازت ڏئي ٿو، "a" کان سواء اسٽرنگ ۾ سڀني اکرن کي صفر-لمبائي ميچ طور ڏيکاريو ويندو. ڏنل ڊگھائي جي تسلسل کي ڳولڻ لاءِ، صرف گھڙيل ڪنگڻ ۾ ڊگھائي بيان ڪريو: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 9باقاعده اظهار a{3} ٽن "a" اکرن جي تسلسل کي ڳولي ٿو. پهرين لڪير ۾ ڪجھ به نه مليو ڇو ته ڪافي نه هئا لڪير ۾. ٻيو 3 اکرن تي مشتمل آهي، جيڪو پروگرام ڳولي ٿو. ٽيون ٽيسٽ پڻ اسٽرنگ جي شروعات ۾ هڪ ميچ ڳولي ٿو. 3rd ڪردار کان پوءِ هر شيءِ باقاعده اظهار کي پورو نٿو ڪري، هيٺ ڏنل ڪوڊ ۾ اهو ڪندو آهي ۽ اتي ڪيترائي ميلا هوندا: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 10گهٽ ۾ گهٽ تسلسل جي ڊيگهه کي بيان ڪرڻ لاءِ، استعمال ڪريو:
Enter your regex: a{3,}
Enter input string to search: aaaaaaaaa
I found the text "aaaaaaaaa" starting at index 0 and ending at index 9.
هن مثال ۾، پروگرام صرف هڪ ميچ ڳولي ٿو ڇاڪاڻ ته اسٽرنگ (3) "a" اکرن جي گهٽ ۾ گهٽ ترتيب جي ڊيگهه جي گهرج پوري ڪري ٿي. آخرڪار، ترتيب جي وڌ ۾ وڌ ترتيب جي ڊيگهه: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 11هن مثال ۾، پهرين ميچ ڇهين ڪردار تي ختم ٿي وئي. ٻئي ميچ ۾ ڇهين کان پوءِ اکر شامل آهن، ڇاڪاڻ ته اهي گهٽ ۾ گهٽ ڊيگهه جي گهرج کي پورو ڪن ٿا. جيڪڏهن اسٽرنگ هڪ اکر ننڍو هجي ها ته ٻي ڪا به ميچ نه هجي ها.

استعمال ڪندي ڪردار گروپن ۽ طبقن سان quantifiers

ھن نقطي تائين، اسان ھڪڙي ئي اکر تي مشتمل اسٽرنگ تي مقدار کي جانچيو آھي. مقدار صرف هڪ اکرن تي لاڳو ٿئي ٿي، تنهنڪري باقاعده اظهار "abc+" هڪ يا وڌيڪ ڀيرا "ab" ۽ "c" تي مشتمل اسٽرنگ سان ملندو. ان جو مطلب نه ٿيندو "abc" هڪ يا وڌيڪ ڀيرا. پر quantifiers گروپن ۽ ڪردار جي طبقن سان گڏ استعمال ڪري سگھجن ٿا، جهڙوڪ [abc]+ (a يا b يا c، هڪ يا وڌيڪ ڀيرا) يا (abc)+ ("abc" هڪ يا وڌيڪ ڀيرا). اچو ته اکرن جو هڪ گروپ (ڪتو) ڳوليون، هڪ قطار ۾ ٽي ڀيرا: جاوا ۾ باقاعده اظهار جا بنيادي.  حصو 3 - 12پهرين مثال ۾، پروگرام هڪ ميچ ڳولي ٿو، ڇاڪاڻ ته quantifier اکرن جي هڪ گروهه تائين وڌائي ٿو. جيڪڏهن توهان بریکٹس کي هٽايو ٿا، مقدار کي درست ڪندڙ {3} صرف اکر "g" تي لاڳو ٿيندو. توھان پڻ استعمال ڪري سگھو ٿا quantifiers with character classes: Основы регулярных выражений в Java. Часть 3 - 13{3} quantifier لاڳو ٿئي ٿو ڪردار طبقي تي بریکٹس ۾ پھرين مثال ۾، ۽ ٻئي ۾ - صرف ڪردار ”c“ تي.

لالچي، سست ۽ گهڻي لالچي مقدار جي وچ ۾ فرق

لالچي، ناگزير، ۽ مالدار مقدار جي وچ ۾ ٿورا فرق آهن. لالچي مقدار کي ايترو نالو ڏنو ويو آهي ڇاڪاڻ ته اهي سڀ کان ڊگهي ممڪن ميچ ڳولڻ جي ڪوشش ڪندا آهن: پروگرام پهريون ڀيرو سڄي اسٽرنگ کي "کائڻ" جي ڪوشش ڪري ٿو، جيڪڏهن هڪ ميچ نه ملي، پوء هڪ ڪردار رد ڪيو ويندو آهي ۽ ڳولا کي بار بار ڪيو ويندو آهي جيستائين هڪ ميچ نه ملي يا وڌيڪ ڪردار باقي نه رهيا آهن. سست ماڻهو، ٻئي طرف، لڪير جي شروعات کان شروع ڪن ٿا، ڪردار کان پوء ڪردار شامل ڪن ٿا جيستائين اهي هڪ ميچ ڳولي. آخرڪار، حسد جي مقدار کي هڪ ڀيرو مڪمل اسٽرنگ اسڪين ڪري ٿو، لالچ ۾ ڪردارن کي هٽائڻ کان سواء. نمائش لاءِ، اسان xfooxxxxxxxfoo اسٽرنگ استعمال ڪنداسين. Основы регулярных выражений в Java. Часть 3 - 14پھريون مثال لالچي. جيئن ته cantifier لالچي آهي، ميچ مليو سڄي تار تي مشتمل آهي. هڪ لالچي quantifier هڪ تار ۾ سڀ ميچون نه لھندين ڇاڪاڻ ته پهرين قدم ۾، سڄي اسٽرنگ کي اسڪين ڪرڻ کان پوء، اهو هڪ ميچ ڳوليندو ۽ نوڪري ختم ڪندو. ٻيو مثال سست آهي ۽ لڪير جي شروعات کان شروع ٿئي ٿو، ڪردار طرفان ڪردار شامل ڪندي. پروگرام "خالي" جي جانچ ڪندي شروع ٿئي ٿو، پر ان کان پوء تسلسل "foo" لڪير جي شروعات ۾ نه آهي، ڳولا "x" جي اکر جي اضافي سان جاري آهي، جنهن کان پوء پهرين ميچ انڊيڪس 0 ۽ 4 جي وچ ۾ ملندي. ڳولا جاري رهي جيستائين لائين جي آخر تائين ۽ ٻيو ميچ انڊيڪس 4 ۽ 13 جي وچ ۾ ملندو. ٽيون مثال اتفاق نه ٿو ملي ڇاڪاڻ ته مقدار کي حسد آهي. انهي صورت ۾، باقاعده اظهار. * + سڄي لائين کي "کايو"، "فو" لاء ڪجھ به نه ڇڏي. حسد واري مقدار کي استعمال ڪريو جڏهن توهان کي تار ۾ ڪنهن به غير ضروري کي رد ڪرڻ جي ضرورت آهي، اهو برابر لالچي مقدار جي ڀيٽ ۾ وڌيڪ اثرائتو ٿيندو. اهو ئي سڀ ڪجهه آهي! ذريعو سان لنڪ: جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION