اچو ته باقاعده اظهار جو مطالعو جاري رکون. هن آرٽيڪل ۾ اسين اڳواٽ بيان ڪيل ڪردارن جي طبقن سان گڏوگڏ مقدار جي مقدار کي ڏسندا سين (سلسلن جي ڳولا).
ھن جدول ۾، کاٻي ڪالم ۾ ٺھيل آھن ساڄي ڪالمن ۾ اظهار جي مختصر ھٿ جي نمائندگي. مثال طور، ![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 3]()
پهرين ٽن مثالن ۾، باقاعده اظهار صرف "
Quantifiers توهان کي اسٽرنگ ۾ هڪ ڪردار جي واقعن جو تعداد بيان ڪرڻ جي اجازت ڏين ٿا. اچو ته هڪ ويجهڙائي تي نظر رکون ته ڪيئن لالچي، سست، ۽ تمام لالچي مقدار جي ڪم ڪن ٿا. پهرين نظر ۾ اهو لڳي سگھي ٿو ته quantifier X؟, X?? ۽ X؟+ ساڳئي طريقي سان ڪم ڪريو: "X هڪ ڀيرو موجود آهي يا نه. انهن quantifiers جي عمل ۾ ٿورو اختلاف آهن، جنهن کي اسين هيٺ ڏسندا سين.
مٿين مثال ۾، ڳولا پهرين ٻن ڪيسن ۾ ڪامياب ٿي، ڇاڪاڻ ته اظهار a؟ ۽ a* ڪردار a کي تار مان غائب ٿيڻ جي اجازت ڏيو. اهو پڻ نوٽ ڪريو ته شروعات ۽ آخري ميچ انڊيڪس ساڳيا آهن (0). جيئن ته ان پٽ اسٽرنگ جي ڪا ڊگھائي نه آهي، ان ڪري پروگرام ڪجھ به نه ٿو ملي :) پهرين پوزيشن ۾. اهو ڪيس صفر-لمبائي ميچ سڏيو ويندو آهي. اهڙيون ميچون ڪيترن ئي ڪيسن ۾ ٿينديون آهن: جڏهن ان پٽ لائين خالي هجي، ان پٽ لائين جي شروعات ۾، لڪير جي آخري ڪردار کان پوءِ، يا لڪير ۾ ڪردارن جي وچ ۾. زيرو ڊگھائي ميچون آسانيءَ سان ڏسڻ ۾ اچن ٿيون: اھي شروع ۽ ختم ساڳي پوزيشن تي. اچو ته ڏسون ڪجهه وڌيڪ مثالن جي صفر-لمبائي ميچن جا. اچو ته ڪجهه وڌيڪ مثالن سان صفر-لمبائي ميچن کي ڳوليون. اچو ته ان پٽ اسٽرنگ کي ڪردار "a" ۾ تبديل ڪريون ۽ هڪ دلچسپ اثر ڏسو:
سڀني ٽن quantifiers ڪردار "a" کي مليو، پر پهريان ٻه، جيڪي هڪ ڪردار جي غير موجودگي جي اجازت ڏين ٿا، پوزيشن 1 تي صفر-لمبائي ميچ مليا. - تار جي آخري ڪردار کان پوء. اهو ٿي سگهي ٿو ڇاڪاڻ ته پروگرام ڪردار "a" کي اسٽرنگ جي طور تي علاج ڪري ٿو ۽ ان جي ذريعي "هلائي ٿو" جيستائين وڌيڪ ميچ نه آهن. استعمال ڪيل مقدار جي بنياد تي، پروگرام سٽ جي آخر ۾ "ڪجھ به" نه ملندو يا نه ملندو. ھاڻي اچو ته ان پٽ اسٽرنگ کي پنجن اکرن جي تسلسل ۾ تبديل ڪريون "a":
Regular expression a؟ سٽ ۾ هر اکر لاءِ الڳ الڳ ملندو. اظهار a* ٻه ميچون ڳولي ٿو: ڪردار جي ترتيب "a"' ۽ هڪ صفر-لمبائي ميچ پوزيشن 5 تي. ۽ آخر ۾، ريگيولر ايڪسپريشن a+ صرف اکرن جي تسلسل کي ڳولي ٿو "a"، بغير "ڪجھ به نه" ڳولڻ جي :) ڇا ٿيندو جيڪڏهن مختلف اکرن تي مشتمل هڪ اسٽرنگ ان پٽ طور ڏنو وڃي؟ مثال طور، "ababaaaab":
ڪردار "b" پوزيشن 1، 3، ۽ 8 ۾ آهي ۽ پروگرام انهن پوزيشن تي صفر-لمبائي ميچ ڳولي ٿو. باقاعده اظهار الف؟ "b" تي ڌيان نه ڏيندو آهي، پر صرف "a" ڪردار جي موجودگي (يا غير موجودگي) کي ڳولي ٿو. جيڪڏهن quantifier "a" جي غير موجودگي جي اجازت ڏئي ٿو، "a" کان سواء اسٽرنگ ۾ سڀني اکرن کي صفر-لمبائي ميچ طور ڏيکاريو ويندو. ڏنل ڊگھائي جي تسلسل کي ڳولڻ لاءِ، صرف گھڙيل ڪنگڻ ۾ ڊگھائي بيان ڪريو:
باقاعده اظهار a{3} ٽن "a" اکرن جي تسلسل کي ڳولي ٿو. پهرين لڪير ۾ ڪجھ به نه مليو ڇو ته ڪافي نه هئا لڪير ۾. ٻيو 3 اکرن تي مشتمل آهي، جيڪو پروگرام ڳولي ٿو. ٽيون ٽيسٽ پڻ اسٽرنگ جي شروعات ۾ هڪ ميچ ڳولي ٿو. 3rd ڪردار کان پوءِ هر شيءِ باقاعده اظهار کي پورو نٿو ڪري، هيٺ ڏنل ڪوڊ ۾ اهو ڪندو آهي ۽ اتي ڪيترائي ميلا هوندا:
گهٽ ۾ گهٽ تسلسل جي ڊيگهه کي بيان ڪرڻ لاءِ، استعمال ڪريو:
هن مثال ۾، پهرين ميچ ڇهين ڪردار تي ختم ٿي وئي. ٻئي ميچ ۾ ڇهين کان پوءِ اکر شامل آهن، ڇاڪاڻ ته اهي گهٽ ۾ گهٽ ڊيگهه جي گهرج کي پورو ڪن ٿا. جيڪڏهن اسٽرنگ هڪ اکر ننڍو هجي ها ته ٻي ڪا به ميچ نه هجي ها.
پهرين مثال ۾، پروگرام هڪ ميچ ڳولي ٿو، ڇاڪاڻ ته quantifier اکرن جي هڪ گروهه تائين وڌائي ٿو. جيڪڏهن توهان بریکٹس کي هٽايو ٿا، مقدار کي درست ڪندڙ {3} صرف اکر "g" تي لاڳو ٿيندو. توھان پڻ استعمال ڪري سگھو ٿا quantifiers with character classes:
{3} quantifier لاڳو ٿئي ٿو ڪردار طبقي تي بریکٹس ۾ پھرين مثال ۾، ۽ ٻئي ۾ - صرف ڪردار ”c“ تي.
پھريون مثال لالچي. جيئن ته cantifier لالچي آهي، ميچ مليو سڄي تار تي مشتمل آهي. هڪ لالچي quantifier هڪ تار ۾ سڀ ميچون نه لھندين ڇاڪاڻ ته پهرين قدم ۾، سڄي اسٽرنگ کي اسڪين ڪرڻ کان پوء، اهو هڪ ميچ ڳوليندو ۽ نوڪري ختم ڪندو. ٻيو مثال سست آهي ۽ لڪير جي شروعات کان شروع ٿئي ٿو، ڪردار طرفان ڪردار شامل ڪندي. پروگرام "خالي" جي جانچ ڪندي شروع ٿئي ٿو، پر ان کان پوء تسلسل "foo" لڪير جي شروعات ۾ نه آهي، ڳولا "x" جي اکر جي اضافي سان جاري آهي، جنهن کان پوء پهرين ميچ انڊيڪس 0 ۽ 4 جي وچ ۾ ملندي. ڳولا جاري رهي جيستائين لائين جي آخر تائين ۽ ٻيو ميچ انڊيڪس 4 ۽ 13 جي وچ ۾ ملندو. ٽيون مثال اتفاق نه ٿو ملي ڇاڪاڻ ته مقدار کي حسد آهي. انهي صورت ۾، باقاعده اظهار. * + سڄي لائين کي "کايو"، "فو" لاء ڪجھ به نه ڇڏي. حسد واري مقدار کي استعمال ڪريو جڏهن توهان کي تار ۾ ڪنهن به غير ضروري کي رد ڪرڻ جي ضرورت آهي، اهو برابر لالچي مقدار جي ڀيٽ ۾ وڌيڪ اثرائتو ٿيندو. اهو ئي سڀ ڪجهه آهي! ذريعو سان لنڪ: جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3
اڳواٽ بيان ڪيل ڪردار جا ڪلاس
ڪلاس APIPattern
۾ اڳواٽ بيان ڪيل ڪردار ڪلاس شامل آهن جيڪي عام طور تي استعمال ٿيندڙ باقاعده اظهار لاءِ آسان شارٽ ڪٽ پيش ڪن ٿا. \d
هڪ نمبر جو مطلب آهي (0-9)، \w
مطلب ته ڪو به وڏو يا ننڍو اکر، هيٺيون يا نمبر). جڏهن به ممڪن هجي اڳواٽ بيان ڪيل ڪردار ڪلاس استعمال ڪريو. اهو توهان جي ڪوڊ کي پڙهڻ ۽ غلطين کي درست ڪرڻ آسان بڻائي ڇڏيندو. بيڪ سليش سان شروع ٿيندڙ تعميرات کي فرار يا محفوظ سڏيو ويندو آهي. پوئين مضمونن ۾، اسان اڳ ۾ ئي خاص ڪردارن کي پٺتي پيل يا علامتن سان فرار ڪرڻ \Q
۽ \E
انهن کي باقاعده ڪردارن طور استعمال ڪرڻ بابت ڳالهايو آهي. جيڪڏهن توهان باقاعده اکرن (لفظي) سان هڪ پٺتي سليش استعمال ڪريو ٿا، ته پوء توهان کي گڏ ڪرڻ لاء اظهار لاء بيڪ سليش کان بچڻ جي ضرورت آهي.
private final String REGEX = "\\d"; // цифра
هن مثال ۾ \d
، هڪ باقاعده اظهار؛ پروگرام کي گڏ ڪرڻ لاء اضافي پٺتي پيل ضروري آهي. اسان جو ٽيسٽ پروگرام سڌو سنئون ڪنسول مان باقاعده اظهار پڙهي ٿو، تنهنڪري اضافي سليش جي ضرورت ناهي. هيٺيون مثال اڳواٽ بيان ڪيل ڪردار جي طبقن جي استعمال کي ظاهر ڪري ٿو: ![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 3](https://cdn.javarush.com/images/article/1b01383c-1811-4648-8923-b6987db5e19d/1024.jpeg)
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 4](https://cdn.javarush.com/images/article/4e1c1668-4406-4488-a2ab-17d0111c8aa6/1024.jpeg)
.
" (ڊٽ خاص ڪردار) آهي، جنهن جو مطلب آهي ڪو به ڪردار. تنهن ڪري، ڳولا هر صورت ۾ ڪامياب ٿي. ٻيا مثال اڳواٽ بيان ڪيل ڪردار طبقن کي استعمال ڪن ٿا، جن جي معني اسان مٿي ڏنل جدول ۾ بحث ڪيو آهي.
مقداري
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 4](https://cdn.javarush.com/images/article/46bbc180-b0c7-4fd2-964a-d74319f7838b/1024.jpeg)
صفر ڊگھائي ملن ٿا
اچو ته لالچي سان شروع ڪريون. اچو ته ٽي مختلف باقاعده اظهار لکون: خاص اکرن سان "a" اکر؟، * يا +. اچو ته ڏسون ته ڇا ٿيندو جيڪڏهن اسان انهن باقاعده اظهارن کي خالي لڪير تي آزمايو:![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 5](https://cdn.javarush.com/images/article/2222afd9-7255-43ef-9c29-5ebfbc56aab9/1024.jpeg)
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 6](https://cdn.javarush.com/images/article/e1c808a7-5a1c-48a1-ada5-8e7398ce7711/1024.jpeg)
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 7](https://cdn.javarush.com/images/article/01af5247-7fa0-429a-b3ea-5a5a15ef1f7f/1024.jpeg)
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 8](https://cdn.javarush.com/images/article/015a8b48-4d89-4af1-987e-2a7cab1b62d3/1024.jpeg)
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 9](https://cdn.javarush.com/images/article/c871b787-760d-4a53-b3bd-6b04d4afd41e/1024.jpeg)
![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 10](https://cdn.javarush.com/images/article/aac87994-bca7-414d-a7c1-aadf017c1281/1024.jpeg)
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](https://cdn.javarush.com/images/article/722ccf78-ee60-42b3-aae6-373aa310cc19/1024.jpeg)
استعمال ڪندي ڪردار گروپن ۽ طبقن سان quantifiers
ھن نقطي تائين، اسان ھڪڙي ئي اکر تي مشتمل اسٽرنگ تي مقدار کي جانچيو آھي. مقدار صرف هڪ اکرن تي لاڳو ٿئي ٿي، تنهنڪري باقاعده اظهار "abc+" هڪ يا وڌيڪ ڀيرا "ab" ۽ "c" تي مشتمل اسٽرنگ سان ملندو. ان جو مطلب نه ٿيندو "abc" هڪ يا وڌيڪ ڀيرا. پر quantifiers گروپن ۽ ڪردار جي طبقن سان گڏ استعمال ڪري سگھجن ٿا، جهڙوڪ [abc]+ (a يا b يا c، هڪ يا وڌيڪ ڀيرا) يا (abc)+ ("abc" هڪ يا وڌيڪ ڀيرا). اچو ته اکرن جو هڪ گروپ (ڪتو) ڳوليون، هڪ قطار ۾ ٽي ڀيرا:![جاوا ۾ باقاعده اظهار جا بنيادي. حصو 3 - 12](https://cdn.javarush.com/images/article/0414bbda-dd55-4ac1-af29-9dcf53b20c05/1024.jpeg)
![Основы регулярных выражений в Java. Часть 3 - 13](https://cdn.javarush.com/images/article/8477b7f2-fdd5-4f23-9890-f2015a6ba011/1024.jpeg)
لالچي، سست ۽ گهڻي لالچي مقدار جي وچ ۾ فرق
لالچي، ناگزير، ۽ مالدار مقدار جي وچ ۾ ٿورا فرق آهن. لالچي مقدار کي ايترو نالو ڏنو ويو آهي ڇاڪاڻ ته اهي سڀ کان ڊگهي ممڪن ميچ ڳولڻ جي ڪوشش ڪندا آهن: پروگرام پهريون ڀيرو سڄي اسٽرنگ کي "کائڻ" جي ڪوشش ڪري ٿو، جيڪڏهن هڪ ميچ نه ملي، پوء هڪ ڪردار رد ڪيو ويندو آهي ۽ ڳولا کي بار بار ڪيو ويندو آهي جيستائين هڪ ميچ نه ملي يا وڌيڪ ڪردار باقي نه رهيا آهن. سست ماڻهو، ٻئي طرف، لڪير جي شروعات کان شروع ڪن ٿا، ڪردار کان پوء ڪردار شامل ڪن ٿا جيستائين اهي هڪ ميچ ڳولي. آخرڪار، حسد جي مقدار کي هڪ ڀيرو مڪمل اسٽرنگ اسڪين ڪري ٿو، لالچ ۾ ڪردارن کي هٽائڻ کان سواء. نمائش لاءِ، اسان xfooxxxxxxxfoo اسٽرنگ استعمال ڪنداسين.![Основы регулярных выражений в Java. Часть 3 - 14](https://cdn.javarush.com/images/article/dab5f212-bec3-4246-bee7-d969dcb04894/1024.jpeg)
GO TO FULL VERSION