JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ باقاعده اظهار، حصو 2

جاوا ۾ باقاعده اظهار، حصو 2

گروپ ۾ شايع ٿيل
اسان توهان جي ڌيان لاءِ پيش ڪريون ٿا هڪ مختصر گائيڊ جو ترجمو جاوا ۾ باقاعده اظهار لاءِ، جيف فريسن طرفان لکيل آهي javaworld ويب سائيٽ لاءِ . پڙهڻ جي آسانيءَ لاءِ، اسان مضمون کي ڪيترن ئي حصن ۾ ورهايو آهي. جاوا ۾ باقاعده اظهار، حصو 2 - 1جاوا ۾ باقاعده اظهار، حصو 1
گهڻن حدن کي ضم ڪرڻ
توھان گھڻن حدن کي ھڪڙي ھڪڙي رينج جي ڪردار جي ڪلاس ۾ ضم ڪري سگھوٿا انھن کي پاسي کان رکي. مثال طور، ڪلاس [a-zA-Z]سڀني لاطيني الفابيٽ جي اکرن کي هيٺين يا مٿين صورت ۾ ملائي ٿو.

گهڻن حدن کي ضم ڪرڻ

توھان گھڻن حدن کي ھڪڙي ھڪڙي رينج جي ڪردار جي ڪلاس ۾ ضم ڪري سگھوٿا انھن کي پاسي کان رکي. مثال طور، ڪلاس [a-zA-Z]سڀني لاطيني الفابيٽ جي اکرن کي هيٺين يا مٿين صورت ۾ ملائي ٿو.

ڪردار ڪلاس کي گڏ ڪرڻ

هڪ ڪردار ڪلاس يونين ڪيترن ئي nested ڪردار طبقن تي مشتمل آهي ۽ نتيجي ۾ يونين ۾ سڀني ڪردارن سان ملن ٿا. مثال طور، ڪلاس [a-d[m-p]]اکرن سان ملندو آهي کان a۽ dکان mتائين p. ھيٺ ڏنل مثال تي غور ڪريو: java RegexDemo [ab[c-e]] abcdef ھي مثال اکر ملندو a, b, c, dand e, جن لاءِ ملندڙ آھن abcdef:
regex = [ab[c-e]]
input = abcdef
Found [a] starting at 0 and ending at 0
Found [b] starting at 1 and ending at 1
Found [c] starting at 2 and ending at 2
Found [d] starting at 3 and ending at 3
Found [e] starting at 4 and ending at 4

ڪردار ڪلاس جي چوڪ

ڪردارن جي ڪلاسن جو انتساب انھن اکرن تي مشتمل ھوندو آھي جيڪي عام آھن سڀني نيسٽ ٿيل طبقن لاءِ ۽ ملن ٿا صرف عام اکرن سان. مثال طور، ڪلاس [a-z&&[d-f]]اکرن سان ملندو آهي d، e۽ f. ھيٺ ڏنل مثال تي غور ڪريو: java RegexDemo "[aeiouy&&[y]]" party نوٽ ڪريو ته منھنجي ونڊوز آپريٽنگ سسٽم تي، ڊبل اقتباس گھربل آھن ڇو ته ڪمانڊ شيل انھن کي &ڪمانڊ ڌار ڪندڙ سمجھي ٿو. هي مثال صرف اهو ڪردار ڳوليندو yجنهن ۾ هڪ ميچ آهي party:
regex = [aeiouy&&[y]]
input = party
Found [y] starting at 4 and ending at 4

گھٽائڻ وارا ڪردار ڪلاس

گھٽائڻ وارا ڪردار ڪلاس سڀني اکرن تي مشتمل آھن سواءِ انھن جي جيڪي nested ڪردارن جي ڪلاسن ۾ شامل آھن، ۽ صرف انھن باقي اکرن سان ملن ٿا. مثال طور، ڪلاس [a-z&&[^m-p]]اکرن سان ملندو آھي aکان l۽ qمنجھان تائين z: java RegexDemo "[a-f&&[^a-c]&&[^e]]" abcdefg ھي مثال اکر ڳوليندو d۽ fجنھن لاءِ ھن ۾ ملندڙ آھن abcdefg:
regex = [a-f&&[^a-c]&&[^e]]
input = abcdefg
Found [d] starting at 3 and ending at 3
Found [f] starting at 5 and ending at 5

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

شارٽ هينڊ نوٽشن جي استعمال کي صحيح ثابت ڪرڻ لاءِ ڪجهه ڪردار جا طبقا باقاعده اظهار ۾ اڪثر ظاهر ٿيندا آهن . ڪلاس Patternپيش ڪري ٿو اڳواٽ بيان ڪيل ڪردار طبقن جهڙوڪ مخفف. توھان انھن کي استعمال ڪري سگھوٿا پنھنجي باقاعده اظهار کي آسان ڪرڻ ۽ نحوي غلطين کي گھٽائڻ لاءِ. اڳواٽ بيان ڪيل ڪردارن جا ڪيترائي ڀاڱا آھن: معياري، POSIX، java.lang.Character۽ يونيڪوڊ خاصيتون جھڙوڪ اسڪرپٽ، بلاڪ، ڪيٽيگري، ۽ بائنري. هيٺ ڏنل فهرست صرف معياري طبقن جو درجو ڏيکاري ٿو:
  • \d: نمبر. برابر [0-9].
  • \D: غير عددي ڪردار. برابر [^0-9].
  • \s: وائيٽ اسپيس ڪردار. برابر [ \t\n\x0B\f\r].
  • \S: وائيٽ اسپيس ڪردار نه آهي. برابر [^\s].
  • \w: لفظ ٺاهڻ جي علامت. برابر [a-zA-Z_0-9].
  • \W: لفظ ٺاهڻ وارو ڪردار نه آهي. برابر [^\w].
هيٺ ڏنل مثال \wان پٽ ٽيڪسٽ ۾ سڀني لفظن جي اکرن کي بيان ڪرڻ لاءِ اڳواٽ بيان ڪيل ڪردار ڪلاس استعمال ڪري ٿو: java RegexDemo \w "aZ.8 _" هيٺين عمل جي نتيجن کي ويجھو ڏسو، جيڪو ڏيکاري ٿو ته دور ۽ اسپيس اکرن کي لفظ جا اکر نه سمجھيا ويا آهن:
regex = \w
input = aZ.8 _
Found [a] starting at 0 and ending at 0
Found [Z] starting at 1 and ending at 1
Found [8] starting at 3 and ending at 3
Found [_] starting at 5 and ending at 5
لائين جدا ڪندڙ
ڪلاس SDK دستاويز Patternبيان ڪري ٿو ڊٽ ميٽا ڪرڪٽر کي اڳواٽ بيان ڪيل ڪردار جي ڪلاس جي طور تي جيڪو ڪنهن به ڪردار سان ملندو آهي سواءِ لڪير جي جدا ڪندڙ (هڪ- يا ٻه-ڪردار ترتيب جيڪي هڪ لڪير جي آخر کي نشانو بڻائيندا آهن). استثنا آهي ڊاٽل موڊ (جنهن تي اسان اڳتي بحث ڪنداسين)، جنهن ۾ نقطا به ملن ٿا لائين جدا ڪندڙ. ڪلاس Patternهيٺ ڏنل لائين جدا ڪندڙ کي ڌار ڪري ٿو:
  • گاڏين جي واپسي جو ڪردار ( \r
  • نيو لائن ڪردار (پيپر ھڪڙي لائن کي اڳتي وڌائڻ لاءِ علامت) ( \n
  • \r\nهڪ گاڏي جي واپسي وارو ڪردار فوري طور تي هڪ نئين لائين ڪردار ( ) جي پٺيان .
  • ايندڙ لائن ڪردار ( \u0085
  • لڪير ڌار ڪندڙ ڪردار ( \u2028
  • پيراگراف جدا ڪندڙ علامت ( \u2029)

قبضو ڪيل گروپ

ڪيپچرنگ گروپ استعمال ڪيو ويندو آھي اکرن جي مليل سيٽ کي محفوظ ڪرڻ لاءِ وڌيڪ استعمال لاءِ جڏهن نمونن جي ڳولا ڪريو. هي اڏاوت اکرن جو هڪ سلسلو آهي جيڪو ميٽا اچار ۾ بند ٿيل آهي قوس ( ( )). سڀني ڪردارن کي پڪڙيل گروپ جي اندر ھڪڙي ھڪڙي سمجھي ويندي آھي جڏھن نموني جي ڳولا ڪريو. مثال طور، گرفتاري گروپ ( Java) اکرن کي گڏ ڪري ٿو J، a, v۽ aھڪڙي يونٽ ۾. Javaهي پڪچر گروپ ان پٽ ٽيڪسٽ ۾ نمونن جي سڀني واقعن کي ڳولي ٿو . هر ميچ سان، پوئين ذخيرو ڪيل اکرن کي Javaايندڙن سان تبديل ڪيو ويندو. قبضو ڪيل گروپن کي ٻين گرفتار ڪيل گروپن جي اندر اندر رکي سگھجي ٿو. مثال طور، هڪ باقاعده اظهار ۾، (Java( language))هڪ گروهه (language)هڪ گروپ جي اندر اندر هوندو آهي (Java). هر nested يا غير nested ڪيپچر گروپ هڪ نمبر مقرر ڪيو ويو آهي، 1 کان شروع ٿئي ٿو، ۽ نمبرنگ کاٻي کان ساڄي طرف وڃي ٿي. پوئين مثال ۾، (Java( language))ميچون ڪيپچر گروپ نمبر 1 ۽ (language)ميچون ڪيپچر گروپ نمبر 2. ريگيولر ايڪسپريس ۾ (a)(b)، (a)ميچون ڪيپچر گروپ نمبر 1 ۽ (b)ڪيپچر گروپ نمبر 2. جاوا ۾ باقاعده اظهار، حصو 2 - 2ڪيپچر گروپن پاران محفوظ ڪيل ميچز بعد ۾ پٺتي حوالن کي استعمال ڪندي پھچائي سگھجن ٿيون. بيڪ سليش ڪردار جي طور تي بيان ڪيو ويو آهي جنهن جي پٺيان هڪ عددي ڪردار جيڪو گروپ جي قبضي جي تعداد سان مطابقت رکي ٿو، پٺاڻ حوالو توهان کي گروپ پاران قبضو ڪيل متن ۾ ڪردارن ڏانهن اشارو ڪرڻ جي اجازت ڏئي ٿو. هڪ پٺ لنڪ هجڻ سبب ميچر کي پڪڙيل گروپ جي محفوظ ڪيل ڳولا جي نتيجن ڏانهن اشارو ڪري ٿو ان مان نمبر جي بنياد تي، ۽ پوء ان نتيجن مان ڪردارن کي استعمال ڪرڻ لاء وڌيڪ ڳولا جي ڪوشش ڪرڻ لاء. هيٺ ڏنل مثال متن ۾ گرامر جي غلطين کي ڳولڻ لاءِ پٺتي حوالن جو استعمال ڏيکاري ٿو: java RegexDemo "(Java( language)\2)" "The Java language language" هي مثال ان پٽ ٽيڪسٽ ۾ فوري طور تي هيٺ ڏنل (Java( language)\2)نقل ڪيل لفظ سان گراماتي غلطي ڳولڻ لاءِ باقاعده اظهار استعمال ڪري ٿو . هي باقاعده اظهار ٻن گروپن کي پڪڙڻ لاءِ بيان ڪري ٿو: نمبر 1 – , ملندڙ ۽ نمبر 2 – سان لاڳاپيل ، خلائي ڪردار جي پٺيان . پٺاڻ حوالو گروپ نمبر 2 جي ذخيرو ٿيل نتيجن کي ٻيهر ڏسڻ جي اجازت ڏئي ٿو ته جيئن ميچر هڪ اسپيس جي ٻئي واقعن جي ڳولا ڪري سگهي، بعد ۾، هڪ جاءِ جي پهرين واقعن کان فوري پوءِ ۽ . ميچ جا نتيجا هن ريت آهن: languageJava"The Java language language"(Java( language)\2)Java language language(language)language\2languagelanguageRegexDemo
regex = (Java( language)\2)
input = The Java language language
Found [Java language language] starting at 4 and ending at 25

بائونڊري ملائيندڙ

ڪڏهن ڪڏهن توهان کي هڪ لڪير جي شروعات ۾، لفظ جي حدن تي، ٽيڪسٽ جي آخر ۾، وغيره جي نموني جي ميچ کي انجام ڏيڻ جي ضرورت آهي. توھان ھي ڪم ڪري سگھوٿا ھڪڙو استعمال ڪندي ڪلاس ايج ميچرز Pattern، جيڪي آھن باقاعده ايڪسپريس ٺاھڻ جيڪي ھيٺين جڳھن ۾ ميچن جي ڳولا ڪن ٿا:
  • ^: لائن جي شروعات؛
  • $: لائن جي پڇاڙي؛
  • \b: لفظ جي حد؛
  • \B: تخلص جي حد؛
  • \A: متن جي شروعات؛
  • \G: پوئين ميچ جي پڄاڻي؛
  • \Z: متن جي پڇاڙي، ٽرائلنگ لائين ڌار ڪندڙ کان سواءِ (جيڪڏهن موجود هجي)؛
  • \z: متن جي پڇاڙي
هيٺيون مثال ^بائونڊري ميچر ميٽا اچار استعمال ڪري ٿو لڪيرن کي ڳولڻ لاءِ جيڪي شروع ٿين ٿيون The، ان کان پوءِ صفر يا وڌيڪ لفظ جا اکر: java RegexDemo "^The\w*" Therefore ڪردار ^بيان ڪري ٿو ته ان پٽ ٽيڪسٽ جا پهريان ٽي اکر لڳاتار نمونن جي اکرن سان ملن ٿا T، h۽ e، جنهن جي پٺيان ڪنهن به نمبر سان لفظ ٺاھڻ جي نشانين جو. هتي عملدرآمد جو نتيجو آهي:
regex = ^The\w*
input = Therefore
Found [Therefore] starting at 0 and ending at 8
ڇا ٿيندو جيڪڏهن توهان ڪمانڊ لائن کي تبديل ڪيو java RegexDemo "^The\w*" " Therefore"؟ ڪابه ميچ نه ملندي ڇو ته Thereforeان پٽ ٽيڪسٽ هڪ اسپيس اکر جي اڳيان آهي.

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

ڪڏهن ڪڏهن، جڏهن کنڊ ميچرن سان ڪم ڪري رهيا آهيو، توهان کي منهن ڏيڻو پوندو صفر-لمبائي ميچز. Совпадение нулевой длиныهڪ ميچ آهي جنهن ۾ ڪو به اکر نه آهي. اهي ٿي سگهن ٿا خالي ان پٽ ٽيڪسٽ ۾، ان پٽ ٽيڪسٽ جي شروعات ۾، ان پٽ ٽيڪسٽ جي آخري ڪردار کان پوءِ، ۽ ان پٽ ٽيڪسٽ جي ڪنهن به ٻن اکرن جي وچ ۾. زيرو ڊگھائي ميچز کي سڃاڻڻ ۾ آسان آهي ڇاڪاڻ ته اهي هميشه هڪ ئي پوزيشن تي شروع ۽ ختم ڪن ٿا. ھيٺ ڏنل مثال تي غور ڪريو: java RegExDemo \b\b "Java is" ھي مثال ٻن مسلسل لفظن جي حدن جي ڳولا ڪري ٿو، ۽ نتيجا ھن طرح نظر اچن ٿا:
regex = \b\b
input = Java is
Found [] starting at 0 and ending at -1
Found [] starting at 4 and ending at 3
Found [] starting at 5 and ending at 4
Found [] starting at 7 and ending at 6
اسان نتيجن ۾ ڪيترائي صفر-لمبائي ميچ ڏسون ٿا. ھتي ختم ٿيڻ واري پوزيشن شروعاتي پوزيشن کان گھٽ آھي، ڇو ته RegexDemoمون لسٽنگ 1 ۾ سورس ڪوڊ ۾ بيان ڪيو آھي end() – 1. جاوا ۾ باقاعده اظهار، حصو 2 - 3

مقداري

هڪ مقدار جو هڪ باقاعده اظهار تعمير آهي جيڪو واضح طور تي يا واضح طور تي هڪ نموني سان عددي قدر سان ملائي ٿو. هي عددي قدر اهو طئي ڪري ٿو ته ڪيترا ڀيرا نمونن کي ڳولڻ لاء. مقدار ۾ ورهايل آهن لالچي، سست ۽ سپر لالچي:
  • لالچ quantifier ( ?، *يا +) ڊگھي ميچ ڳولڻ لاء ٺهيل آهي. ڇا مان پڇي سگهان ٿو X؟ هڪ يا گهٽ واقعن کي ڳولڻ X، X*صفر يا وڌيڪ واقعن کي ڳولڻ X، X+هڪ يا وڌيڪ واقعن کي ڳولڻ X، واقعن کي X{n}ڳولڻ ، گهٽ ۾ گهٽ (۽ ممڪن طور تي وڌيڪ) واقعن کي ڳولڻ، ۽ گهٽ ۾ گهٽ نه پر وڌيڪ واقعن کي ڳولڻ لاء .nXX{n,}nXX{n,m}nmX
  • سست مقدار ( ??، *?يا +?) ٺهيل آهي مختصر ترين ميچ ڳولڻ لاءِ. توھان وضاحت ڪري سگھو ٿا ھڪڙي يا گھٽ واقعن جي X??ڳولا لاءِ X،؟ X*صفر يا وڌيڪ واقعن کي ڳولڻ X، X+?هڪ يا وڌيڪ واقعن کي ڳولڻ X، واقعن کي X{n}?ڳولڻ ، گهٽ ۾ گهٽ (۽ ممڪن طور تي وڌيڪ) واقعن کي ڳولڻ ، ۽ گهٽ ۾ گهٽ پر واقعن کان وڌيڪ نه .nXX{n,}?nXX{n,m}?nmX
  • سپر لالچي مقدار ساز ( ?+، *+يا ++) لالچي مقدار جي برابر آهي، سواء ان جي ته سپر لالچي مقدار کي صرف هڪ ڪوشش ڪري ٿو تمام ڊگهو ميچ ڳولڻ جي، جڏهن ته لالچي مقدار ساز ڪيترن ئي ڪوششون ڪري سگهي ٿو. X?+ھڪڙي يا گھٽ واقعن کي ڳولڻ لاء X، X*+صفر يا وڌيڪ واقعن کي ڳولڻ لاء X، X++ھڪڙي يا وڌيڪ واقعن کي ڳولڻ لاء X، واقعن کي ڳولڻ X{n}+لاء ، گھٽ ۾ گھٽ (۽ ممڪن طور تي وڌيڪ) واقعن کي ڳولڻ لاء، ۽ گھٽ ۾ گھٽ پر واقعن کان وڌيڪ نه. .nXX{n,}+nXX{n,m}+ nmX
هيٺ ڏنل مثال لالچي مقدار جي استعمال کي بيان ڪري ٿو: java RegexDemo .*ox "fox box pox" هتي نتيجا آهن:
regex = .*ox
input = fox box pox
Found [fox box pox] starting at 0 and ending at 10
لالچ quantifier ( .*) ۾ ختم ٿيندڙ اکرن جو ڊگهو سلسلو ڳولي ٿو ox. اهو سڄو ان پٽ ٽيڪسٽ استعمال ڪري ٿو ۽ پوءِ واپس ڦري ٿو جيستائين اهو پتو پوي ٿو ته ان پٽ ٽيڪسٽ انهن اکرن سان ختم ٿئي ٿو. ھاڻي غور ڪريو سست quantifier: java RegexDemo .*?ox "fox box pox" ان جا نتيجا:
regex = .*?ox
input = fox box pox
Found [fox] starting at 0 and ending at 2
Found [ box] starting at 3 and ending at 6
Found [ pox] starting at 7 and ending at 10
سست مقدار ( .*?) ۾ ختم ٿيندڙ اکرن جو ننڍو سلسلو ڳولي ٿو ox. اهو هڪ خالي تار سان شروع ٿئي ٿو ۽ تدريجي طور تي اکرن کي استعمال ڪري ٿو جيستائين اهو هڪ ميچ ڳولي ٿو. ۽ پوءِ ڪم جاري رکي جيستائين ان پٽ ٽيڪسٽ ختم نه ٿئي. آخرڪار، اچو ته سپر لالچي مقدار کي ڏسو: java RegexDemo .*+ox "fox box pox" ۽ هتي ان جا نتيجا آهن:
regex = .*+ox
input = fox box pox
اضافي لالچي مقدار ( .*+) ملائي نه ٿو ڳولي ڇاڪاڻ ته اهو سڄو ان پٽ ٽيڪسٽ استعمال ڪري ٿو ۽ oxباقاعده اظهار جي آخر ۾ ميچ ڪرڻ لاء ڪجھ به نه بچيو آهي. لالچي quantifier جي برعڪس، سپر لالچي quantifier واپس رول نه ڪندو آھي.

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

ڪڏهن ڪڏهن quantifiers سان ڪم ڪندي توهان کي صفر-لمبائي ميچن سان منهن ڏيڻو پوندو. مثال طور، هيٺين لالچي مقدار کي استعمال ڪندي ڪيترن ئي صفر-لمبائي ميچن ۾ نتيجا: java RegexDemo a? abaa هن مثال کي هلائڻ جا نتيجا:
regex = a?
input = abaa
Found [a] starting at 0 and ending at 0
Found [] starting at 1 and ending at 0
Found [a] starting at 2 and ending at 2
Found [a] starting at 3 and ending at 3
Found [] starting at 4 and ending at 3
عملدرآمد جي نتيجن ۾ پنج ميچون آهن. جيتوڻيڪ پهريون، ٽيون ۽ چوٿون ڪافي متوقع آهن (اهي ٽن خطن جي پوزيشن سان ملن ٿا a) abaa، ٻيو ۽ پنجون توهان کي حيران ڪري سگهي ٿو. اهو لڳي ٿو ته اهي ظاهر ڪن ٿا ته متن جي آخر سان aلاڳاپيل آهي b، پر حقيقت ۾ اهو معاملو ناهي. باقاعده اظهار متن جي آخر ۾ a?ڳولي نه ٿو . bاهو موجودگي يا غير موجودگي جي ڳولا ڪري ٿو a. جڏهن a?اهو نٿو ملي a، اهو ان کي صفر-لمبائي ميچ جي طور تي رپورٽ ڪري ٿو.

Nested flag expressions

ملندڙ ڪجهه ڊفالٽ مفروضا ٺاهيندا آهن جن کي ختم ڪري سگهجي ٿو جڏهن باقاعده اظهار کي نموني ۾ گڏ ڪيو وڃي. اسان بعد ۾ هن مسئلي تي بحث ڪنداسين. هڪ باقاعده اظهار توهان کي اجازت ڏئي ٿو ته ڪنهن به ڊفالٽ کي اوور رائڊ ڪري هڪ nested پرچم اظهار استعمال ڪندي. هن باقاعده اظهار جي تعمير جي وضاحت ڪئي وئي آهي قوس جي هڪ ميٽا اچارٽر جي چوڌاري هڪ سوال جي نشان جي چوڌاري ميٽ اچارڪٽر ( ?) جي پٺيان هڪ ننڍو لاطيني خط. طبقو Patternسمجھي ٿو ھيٺ ڏنل nested پرچم اظهار:
  • (?i): ڪيس جي غير حساس نموني جي ميلاپ کي فعال ڪري ٿو. مثال طور، جڏهن هڪ حڪم استعمال ڪندي، java RegexDemo (?i)tree Treehouseاکرن جو سلسلو Treeنموني سان ملندو آهي tree. ڊفالٽ ڪيس-حساس نموني جي ڳولا آهي.
  • (?x): سفيد اسپيس اکرن ۽ تبصرن جي استعمال جي اجازت ڏئي ٿي جيڪا نموني جي اندر metacharacter سان شروع ٿئي ٿي #. ميچر ٻنهي کي نظر انداز ڪندو. مثال طور، java RegexDemo ".at(?x)#match hat, cat, and so on" matterاکرن جي تسلسل لاءِ matنموني سان ملندو آهي .at. ڊفالٽ طور، وائيٽ اسپيس اکرن ۽ تبصرن جي اجازت نه آهي، ۽ ميچر انهن کي ڳولها ۾ شامل ڪردارن وانگر سمجهي ٿو.
  • (?s): ڊاٽل موڊ کي فعال ڪري ٿو، جنهن ۾ ڊٽ ميٽا اچارٽر ڪنهن ٻئي ڪردار کان علاوه لائن جدا ڪندڙ سان ملندو آهي. مثال طور، حڪم java RegexDemo (?s). \nهڪ نئين لڪير جو ڪردار ڳوليندو. ڊفالٽ ڊاٽل جي برعڪس آهي: ڪو به ليڪ ڌار ڪندڙ نه ملندو. مثال طور، حڪم Java RegexDemo . \nهڪ نئين لائن ڪردار نه ملندو.
  • (?m): ملٽي لائن موڊ کي فعال ڪري ٿو، جتي اهو هر لڪير جي ^شروعات ۽ $آخر سان ملندو آهي. مثال طور، java RegexDemo "(?m)^abc$" abc\nabcان پٽ ٽيڪسٽ ۾ ٻنهي ترتيبن کي ڳولي ٿو abc. ڊفالٽ طور، سنگل لائن موڊ استعمال ڪيو ويندو آهي: ^پوري ان پٽ ٽيڪسٽ جي شروعات سان ملندو آهي، ۽ $ان جي پڇاڙيءَ سان ملندو آهي. مثال طور، java RegexDemo "^abc$" abc\nabcهڪ جواب ڏي ٿو ته ڪو به ميچ ناهي.
  • (?u): يونيڪوڊ-حساس ڪيس جي ترتيب کي فعال ڪري ٿو. ھي جھنڊو، جڏھن سان گڏ استعمال ڪيو وڃي ٿو (?i)، يونيڪوڊ معيار جي مطابق، غير حساس نمونن جي ميلاپ جي اجازت ڏئي ٿو. ڊفالٽ سيٽنگ صرف ڪيس-حساس ۽ US-ASCII اکرن جي ڳولا لاءِ آهي.
  • (?d): يونڪس طرز جي اسٽرنگ موڊ کي فعال ڪري ٿو، جتي ميچر ميٽا اچار کي حوالي سان سڃاڻي ٿو .، ^۽ $صرف لائن جدا ڪندڙ \n. ڊفالٽ نان يونڪس اسٽائل اسٽرنگ موڊ آهي: ميچر سڃاڻي ٿو، مٿين ميٽا اچار جي حوالي سان، سڀ لائين ڊيليميٽر.
Nested flag expressions پکڙيل گروپن سان مشابهت رکندا آهن ڇاڪاڻ ته انهن جا ڪردار پارنٿيسس ميٽاڪرڪٽرز سان گهيريل آهن. قبضو ڪيل گروپن جي برعڪس، nested پرچم ايڪسپريس غير گرفتار ٿيل گروپن جو هڪ مثال آهن، جيڪي هڪ باقاعده اظهار جي تعمير آهن جيڪي متن جي اکرن کي پڪڙڻ نٿا ڏين. اهي ڪردارن جي ترتيب جي طور تي بيان ڪيا ويا آهن جن جي چوڌاري قوسون جي metacharacters آهن.
گھڻن Nested Flag Expressions جي وضاحت ڪرڻ
اهو ممڪن آهي ته هڪ باقاعده اظهار ۾ ڪيترن ئي nested پرچم ايڪسپريس کي بيان ڪرڻ يا ته انهن کي پاسي جي طرف رکي ( (?m)(?i))) يا انهن اکرن کي رکڻ سان جيڪي انهن کي ترتيب سان بيان ڪن ٿا ( (?mi)).

نتيجو

جئين توهان شايد هن وقت تائين محسوس ڪيو آهي، باقاعده اظهار انتهائي ڪارائتو آهن ۽ اڃا به وڌيڪ ڪارائتو ٿي ويندا آهن جيئن توهان انهن جي نحو جي nuances کي ماهر ڪري سگهو ٿا. هينئر تائين مون توهان کي باقاعده اظهار جي بنيادي ڳالهين سان متعارف ڪرايو آهي ۽ Pattern. حصو 2 ۾، اسين Regex API ۾ وڌيڪ گہرا ڏسنداسين ۽ طريقن جي ڳولا ڪنداسين Pattern، Matcher۽ PatternSyntaxException. مان توهان کي Regex API جون ٻه عملي ايپليڪيشنون پڻ ڏيکاريندس جيڪي توهان فوري طور تي پنهنجي پروگرامن ۾ استعمال ڪري سگهو ٿا. جاوا ۾ باقاعده اظهار، حصو 3 جاوا ۾ باقاعده اظهار، حصو 4 جاوا ۾ باقاعده اظهار، حصو 5
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION