منظم طریقے سے باقاعدہ اظہار سیکھنا: بنیادی مضامین

مصنف:چھوٹا سا خواب, تخلیق: 2017-03-29 10:52:47, تازہ کاری: 2020-11-18 12:39:53

منظم طریقے سے باقاعدہ اظہار سیکھنا: بنیادی مضامین

باقاعدہ اظہار کیا ہے؟ ایک باقاعدہ اظہار ایک مخصوص حروف کا ایک مجموعہ ہوتا ہے جو پہلے سے طے شدہ حروف کا استعمال کرتا ہے، اور اس کے ساتھ ساتھ اس کے حروف کا ایک مجموعہ بناتا ہے، جس میں حروف کے لئے ایک فلٹرنگ منطق کا اظہار کرنے کے لئے استعمال کیا جاتا ہے.

  • باقاعدہ اظہار کے ذریعے مندرجہ ذیل مقاصد حاصل کیے جاسکتے ہیں:

    给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
    可以通过正则表达式,从字符串中获取我们想要的特定部分。
    

    اس کے علاوہ ، آپ کو یہ بھی سیکھنا آسان بنانا چاہئے کہ کس طرح آپ اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر استعمال کرنے کے لئے اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر کو استعمال کرنے کے لئے اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر کو استعمال کرنے کے لئے اپنے کمپیوٹر پر اپنے کمپیوٹر پر اپنے کمپیوٹر کو استعمال

    img

ذیل میں ہم باقاعدہ اظہار کے مختلف اصولوں کی وضاحت شروع کرتے ہیں:

  • عام متن کے حروف سے ملنا

    باقاعدہ اظہار صرف عام متن پر مشتمل ہو سکتا ہے، جس کا مطلب یہ ہے کہ یہ متن بالکل مماثل ہے۔ مثال کے طور پر:

    ایک عام اظہار:songمتوازن متن: Xiaosongge, xiaoSongge ملاپ کے بعد نتائج: xiaosongGe، Xiao Songge باقاعدہ اظہار ڈیفالٹ کی طرف سے بڑے پیمانے پر لکھا جاتا ہے، لہذا گانا میچ نہیں کرتا ہے۔ Song Song. لیکن زیادہ تر باقاعدہ اظہار کی عمل درآمد میں ایک اختیار فراہم کی جاتی ہے جس کا مطلب ہے کہ بڑے پیمانے پر نہیں لکھا جاتا ہے۔

  • کسی بھی حروف سے ملنا

    . کسی بھی حروف سے ملنے کے لئے استعمال کیا جاتا ہے ، جیسے:

    باقاعدہ اظہار: c.t متوازن متن: cat cet caaat dog میچ کے بعد نتائج:cat cetcaaat dog تجزیہ: c.t کو "c شروع ہوتا ہے اور t ختم ہوتا ہے" کے ساتھ مماثل کیا جاتا ہے ، جس میں درمیانی حصے میں کسی بھی حروف کے لئے ایک سٹرنگ ہے۔

    同理,多个连续的.可以匹配多个连续的任意字符:

    باقاعدہ اظہار: c...t متوازن متن: cat cet caat dog میچ کے بعد نتائج: cat cetcaatکتا

  • خصوصی حروف سے ملنا

    . باقاعدہ اظہار میں خاص معنی رکھتا ہے ، ایک خاص کردار ہے۔// یہ بھی ایک خاص کردار ہے ، جو خصوصی کردار کے لئے ترجمہ کا کام کرسکتا ہے۔// اگر آپ میچ کرنا چاہتے ہیں تو ، یہ ایک حقیقی " ہے۔"

    باقاعدہ اظہار: c.t متوازن متن: cat c.t dog ملاپ کے نتائج: catc.tکتا نوٹ: چونکہ \ بھی ایک خاص کردار ہے، لہذا اگر آپ ایک حقیقی \ کردار سے ملنا چاہتے ہیں تو آپ کو دو الٹا slopes \ استعمال کرنے کی ضرورت ہے:

    باقاعدہ اظہار: c \ t متوازن متن کے منتظر: cat c\t dog ملاپ کے نتائج: catc\tکتا

  • حروف سیٹ کا استعمال کریں

    مندرجہ بالا کہا. کسی بھی کردار سے مل سکتا ہے، لیکن اگر میں کچھ مخصوص حروف سے ملنا چاہتا ہوں تو کیا ہوگا؟ مخصوص حروف کے سیٹ سے ملنے کے لئے [اور] میٹا حروف کا استعمال کیا جا سکتا ہے۔

    باقاعدہ اظہار: c[ab]t متوازن متن انتظار کر رہا ہے: cat cbt cet میچ کے بعد نتائج:cat cbtسیٹ تجزیہ: [ab] "a یا b " سے ملتا ہے۔ لہذا c[ab]t cat اور cbt سے ملتا ہے لیکن cet سے نہیں ملتا ہے۔

  • حروف تہجی کا استعمال کریں

    مندرجہ بالا مثال میں ، اگر میں سیٹ کو میچ کرنا چاہتا ہوں تو کیا ہوگا ، کیا میں [] میں ایک اور شامل کروں گا؟ اگر میں کسی بھی چھوٹے حروف کو میچ کرنا چاہتا ہوں تو کیا میں اس میں درجنوں لکھوں گا؟ اگرچہ یہ ممکن ہے ، لیکن یہ بہت لمبا ہے۔ یہاں ہم [a-z] استعمال کرسکتے ہیں:

    باقاعدہ اظہار: c[a-z]t متوازن متن: cat cbt czt c2t میچ کے بعد نتائج:cat cbt cztc2t تجزیہ: c[a-z]t کا مطلب ہے کہ "c شروع ہوتا ہے ، t ختم ہوتا ہے ، وسط میں حرف "a" - "z" کے کسی بھی حرف کے ساتھ۔

    اس کے علاوہ بھی کچھ ایسی ہی جگہیں ہیں:

    [0-9] [0123456789] کی طرح کام کرتا ہے۔ تمام نمبروں سے ملتا ہے۔ [A-F] A سے F تک بڑے حروف سے ملتا ہے۔ [A-Z] تمام A سے Z تک بڑے حروف سے ملتا ہے۔ [a-z] تمام a سے z تک چھوٹے حروف سے ملتا ہے۔ [A-z] ASCII A سے ASCII z تک تمام حروف سے ملتا ہے ((نہ صرف تمام حروف سے ملتا ہے ، بلکہ ASCII ٹیبل میں A سے z تک کے حروف سے ملتا ہے ، جیسے [ اور ^ وغیرہ) ؛) [A-Za-z0-9] تمام بڑے اور چھوٹے حروف اور نمبروں سے ملتا ہے۔

  • غیر سیٹ میچنگ

    عام طور پر ایک سیٹ کے لئے استعمال کیا جاتا ہے جس میں ایک سیٹ کی ضرورت ہوتی ہے۔ تاہم ، بعض اوقات ، آپ کسی ایسے سیٹ کو خارج کرنا چاہتے ہیں جس سے آپ میچ نہیں کرنا چاہتے ہیں۔ یہ ایک سیٹ کے لئے انکار کے ذریعہ کیا جاسکتا ہے۔ مثال کے طور پر:

    باقاعدہ اظہار: c[^a-z]t متوازن متن: cat cbt czt c2t cAt ملاپ کے نتائج: cat cbt cztc2t cAtتجزیہ: یہ پچھلی مثال کے بالکل برعکس ہے۔ [a-z] تمام چھوٹے حروف سے ملتا ہے ، جبکہ [^a-z] تمام غیر چھوٹے حروف سے ملتا ہے۔

    نوٹ کریں کہ ^ کا مطلب ہے کہ اس میں موجود تمام حروف کا میچ منسوخ کردیا گیا ہے۔

  • ابتدائی حروف

    میٹرکارکٹرز کا باقاعدہ اظہار میں خاص معنی ہیں، جہاں ہم نے پہلے ہی کچھ میٹرکارکٹرز کو کہا ہے، جیسے.、[اور]。 یہ کردار براہ راست اپنے معنی کا اظہار نہیں کرسکتے ہیں، مثال کے طور پر، براہ راست [مطابق کرنے کے لئے] [، استعمال کریں.

    تمام میٹرکارکٹرز کے سامنے اینٹرا آرکائیو ٹرانسفارم شامل کیا جاسکتا ہے ، اور جب ٹرانسفارم کیا جاتا ہے تو ، کردار اپنے آپ سے ملتا ہے ، نہ کہ اس کے خصوصی معنی سے۔ مثال کے طور پر ، [ سے ملتا ہے " [ ":

    باقاعدہ اظہار: a[b] متوازن متن کے منتظر: a[b ab a[[b میچ کے بعد نتائج:a[bab a[[b نوٹ: \ کا استعمال کرنے کے لئے تبدیل کرنے کے لئے اہم کردار ، یہ بھی مطلب ہے کہ \ بھی ایک میٹا کردار ہے ؛ لہذا اگر آپ کو ایک حقیقی " \ " سے ملنے کی ضرورت ہے تو ، استعمال کیا جا سکتا ہے \:

    باقاعدہ اظہار: a\b متوازن متن کے منتظر: a\b a\b a[[b ملاپ کے بعد نتائج: a\ba\ba[[b

  • خالی حروف

    بعض اوقات آپ کو ایسے خالی حروف سے ملنا پڑ سکتا ہے جو متن میں پرنٹ نہیں ہو سکتے ہیں۔ مثال کے طور پر، آپ تمام ٹیب حروف یا تمام متبادل حروف تلاش کرنا چاہتے ہیں۔ آپ مندرجہ ذیل جدول میں خصوصی میٹرکارکٹر استعمال کر سکتے ہیں:

    img

    مثال کے طور پر \r\n ایک واپس اور پیچھے کی باری کا مجموعہ سے ملتا ہے، جو ونڈوز میں ایک فائل کی باری کا مطلب ہے۔ لینکس اور یونیکس سسٹم میں، صرف \n کا استعمال کریں۔

  • مخصوص حروف کی اقسام سے ملنا

    کچھ خاص میٹرکارکٹر ہیں جو عام طور پر استعمال ہونے والے کردار کے مجموعے سے ملنے کے لئے استعمال کیے جاسکتے ہیں۔ یہ میٹرکارکٹر میچنگ کلرز کہلاتے ہیں۔ آپ کو ان کا استعمال آسان معلوم ہوگا۔

    عددی یا غیر عددی ملاپ جیسا کہ اوپر کہا گیا ہے، [0-9] تمام نمبروں سے مل سکتا ہے۔ اگر آپ کسی بھی نمبروں سے ملنا نہیں چاہتے ہیں تو آپ [^0-9] کا استعمال کرسکتے ہیں۔ درج ذیل جدول میں عددی اور غیر عددی کلاس کے سب سے اوپر حروف درج ہیں:

    img

    باقاعدہ اظہار: c\dt متوازن متن: cat c2t czt c9t ملاپ کے نتائج: catc2tcztc9t

    باقاعدہ اظہار: c\Dt متوازن متن: cat c2t czt c9t میچ کے بعد نتائج:catc2tcztc9t حروف تہجی اور غیر حروف تہجی کے درمیان ملاپ ایک اور عام طور پر استعمال ہونے والے کلاس میٹرکارکٹرز ہیں \w اور \W:

    img

    باقاعدہ اظہار: c\wt متوازن متن: cat c2t czt c-t c\t میچ کے بعد نتائج:cat c2tc-t c\ t

    باقاعدہ اظہار: c\Wt متوازن متن: cat c2t c-t c\t مماثلت کے بعد نتائج: cat c2tc-t c\tخالی اور غیر خالی جگہیں جوڑیں اس کے علاوہ ، ہم نے ایک اور کلاس بھی دیکھی ہے جس میں ہم نے پہلے ہی دیکھا ہے۔

    img

    باقاعدہ اظہار: c\st متوازن متن: cat c t c2t c \ t ملاپ کے نتائج: catc tc2t c\ t

    باقاعدہ اظہار: c\St متوازن متن: cat c t c2t c \ t میچ کے بعد نتائج:catc tc2t c\t

  • ایک یا ایک سے زیادہ حروف سے ملنا

    + میٹرکارکٹر سے مراد ایک یا زیادہ حروف کا ملاپ ہے۔ مثال کے طور پر، a "a" سے ملاپ کرے گا جبکہ a + ایک یا زیادہ "a" سے ملاپ کرے گا۔

    باقاعدہ اظہار: cat متوازن متن: ct cat caat caaat ملاپ کے بعد نتائج:ctcatکٹ کٹ

    باقاعدہ اظہار: ca + t متوازن متن: ct cat caat caaat ملاپ کے بعد نتائج:ctcat caat caaatجب آپ + کو حروف کے مجموعے میں استعمال کرتے ہیں تو ، آپ کو + علامت کو مجموعہ کے باہر رکھنا ہوگا:

    باقاعدہ اظہار: c [0-9] + t متوازن متن کے لئے انتظار کر رہے ہیں:ct c0t cat c123t ملاپ کے بعد نتائج:ctc0tبلیc123tتجزیہ: c[0-9]+t کا مطلب ہے "c سے شروع ہوتا ہے اور t سے ختم ہوتا ہے" ، جس میں ایک یا زیادہ ہندسوں کا ایک سلسلہ ہوتا ہے۔

    یقینا، [0-9+] بھی ایک جائز باقاعدہ اظہار ہے، لیکن یہ 0 - 9 اور + علامتوں پر مشتمل ایک حروف کا مجموعہ ظاہر کرتا ہے۔

    عام طور پر ، میٹرکارکٹروں جیسے. اور + جیسے حروف کے مجموعے کے لئے استعمال ہوتے ہیں جب لفظی معنی کے طور پر استعمال ہوتے ہیں ، لہذا ان کا ترجمہ کرنے کی ضرورت نہیں ہے۔ لیکن ان کا ترجمہ کرنا بھی ٹھیک ہے ، لہذا ، [0-9+] اور [0-9+] کا کام ایک ہی ہے۔

    نوٹ: + ایک میٹا کردار ہے، "+" سے ملنے کے لئے منتقلی کا استعمال کرنے کی ضرورت ہے۔

  • صفر یا اس سے زیادہ حروف سے ملنا

    اگر آپ صفر یا اس سے زیادہ حروف سے ملنا چاہتے ہیں تو ، آپ * میٹا حروف استعمال کرسکتے ہیں۔

    باقاعدہ اظہار: ca*t متوازن متن کے منتظر: ct cat caat cbt میچ کے بعد نتائج:ct cat caatسی بی ٹی نوٹ:* علامت میٹا کردار ہے۔ * * * * * * * * * * * * * *

  • صفر یا ایک کردار سے ملنا

    ? صفر یا ایک کردار سے ملتا ہے۔ لہذا ، ؟ متن میں ایک اختیاری کردار سے ملنے کے لئے بہت موزوں ہے۔

    باقاعدہ اظہار: ca?t متوازن متن کے منتظر: ct cat caat cbt میچ کے بعد نتائج:ct catسی اے اے ٹی سی بی ٹی نوٹ: ؟ علامت میٹا کردار ہے۔ " ؟ " سے ملنے کے لئے ، " ؟ " کو تبدیل کرنے کی ضرورت ہے۔

  • ملاپ کی تعداد کا استعمال کریں

    ایک باقاعدہ اظہار میچ کرنے کی تعداد کی وضاحت کرنے کی اجازت دیتا ہے۔ تعداد میں اضافہ کرنے کے لئے { } کے درمیان مقرر کیا جا سکتا ہے۔ نوٹ: {اور} بھی میٹا کردار ہیں، اور جب لفظی معنی استعمال کیا جاتا ہے تو اس کا ترجمہ کرنا ضروری ہے۔

    درست تعداد میں مماثلت اگر آپ چاہتے ہیں کہ آپ کے پاس ایک نمبر ہے جو آپ کے پاس ہے تو ، آپ کو اس نمبر کو درج کرنے کی ضرورت ہے۔ مثال کے طور پر ، {3} اس سے پہلے 3 بار ظاہر ہونے والے کسی بھی کردار یا مجموعہ سے مل جائے گا۔

    باقاعدہ اظہار: ca{3}t متوازن متن کے لئے انتظار کر رہے ہیں: ct cat caaat cbt ملاپ کے نتائج: ct catcaaatسی بی ٹی کم از کم تعداد میں مماثلت ہم صرف میچ کے لئے کم سے کم قدر کی وضاحت کر سکتے ہیں۔ مثال کے طور پر، {2,} کا مطلب ہے 2 یا اس سے زیادہ میچ:

    باقاعدہ اظہار: ca{1,} t متوازن متن کے لئے انتظار کر رہے ہیں: ct cat caaat cbt ملاپ کے بعد نتائج:ctcat caaatسی بی ٹی اعشاریہ کے درمیان مماثلت ہم کم سے کم اور زیادہ سے زیادہ تعداد میں مماثلت کا تعین کرنے کے لئے بھی استعمال کرسکتے ہیں۔ مثال کے طور پر، {2,3} کا مطلب ہے کم سے کم 2 میچ اور زیادہ سے زیادہ 3 میچ۔

    باقاعدہ اظہار: ca{2,3} t متوازن متن کے لئے انتظار کر رہے ہیں: ct cat caaat cbt ملاپ کے نتائج: ct catcaaatسی بی ٹی تو؟ اور {0،1} کی تقریب ایک ہی ہے + اور {1،} کی تقریب ایک ہی ہے۔

  • غیر لالچی مماثلت

    اس کے علاوہ ، آپ کو یہ بھی دیکھنا چاہئے کہ آپ کو کیا کرنا چاہئے:

    باقاعدہ اظہار: s.*g متوازن متن: xiao song xiao song ملاپ کے نتائج: xiao song xiao song تجزیہ: s.*g نے متوقع طور پر دو "songs" کے درمیان میچ نہیں کیا بلکہ پہلے "s" اور آخری "g" کے درمیان تمام متن کو میچ کیا۔

    اس کی وجہ یہ ہے کہ * اور + لالچی مماثلت ہیں۔ یعنی ، باقاعدہ اظہار ہمیشہ سب سے بڑی مماثلت کی تلاش کرتا ہے ، نہ کہ کم سے کم ، جو کہ جان بوجھ کر ڈیزائن کیا گیا ہے۔

    لیکن اگر آپ نہیں چاہتے ہیں کہ پیمائش کا پیمائش کریں تو ، ان الفاظ کے غیر پیمائش کا پیمائش کریں (مختلف حروف کو کم سے کم کرنے کے لئے) ؛

    img

    کیا؟اس کے علاوہ ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے کہ آپ کو اس کے بارے میں کیا سوچنا چاہئے ، لہذا آپ *؟ کا استعمال کرکے مندرجہ بالا مثال کو تبدیل کرسکتے ہیں۔

    正则表达式:s.کیا؟ متوازن متن: xiao song xiao song ملاپ کے بعد نتائج: xiaosongشیاؤsong 分析:可以看到s.?g نے دو "Songs" کو ملا دیا ہے۔

  • سٹرنگ کی حدود کی وضاحت کریں

    سٹرنگ کی سرحدوں کے ساتھ ملنے والے میٹرکارکٹر ^ اور $ ہیں ، جو بالترتیب سٹرنگ کے آغاز اور اختتام کے لئے استعمال ہوتے ہیں۔

    ^ استعمال کیا جاتا ہے:

    باقاعدہ اظہار: ^ xiao

    متوازن متن کے انتظار میں:xiaosong میچ کے بعد نتائج:xiaoگانا

    متوازن متن: axiaosong ملاپ کے نتائج: axiaosong تجزیہ: ^ xiao "xiao" سے شروع ہونے والے حروف سے ملتا ہے۔

    $ کا استعمال مندرجہ ذیل ہے:

    باقاعدہ اظہار: song$

    متوازن متن کے انتظار میں:xiaosong ملاپ کے بعد نتائج: xiaosong

    موازنہ کے منتظر متن:xiaosonga ملاپ کے نتائج: Xiaosonga تجزیہ: song$ "song" کے ساتھ ختم ہونے والی سٹرنگ سے ملتا ہے۔

    مشترکہ استعمال:

    باقاعدہ اظہار: ^ [0-9a-zA-Z] {4,} $

    متوازن متن: a1b234ABC میچ کے بعد نتائج:a1b234ABC

    متوازن متن: +a1b23=4ABC ملاپ کے بعد نتیجہ: + a1b23=4ABC تجزیہ: ^ [0-9a-zA-Z]{4,} $ جوڑنے والے اعداد یا حروف پر مشتمل ہے ، اور اس کے ہندسوں کی تعداد چار ہندسوں کے برابر سٹرنگ سے زیادہ ہے۔

    نوٹ: ^ اگر سیٹ کے آغاز میں ہے تو منفی ہے؛ اگر سیٹ کے باہر ہے تو اس سے مطابقت رکھتا ہے سٹرنگ کے آغاز کی جگہ. آپ [^ 0-9] اور ^ [0-9] کے درمیان فرق کی کوشش کر سکتے ہیں.

  • کثیر سطر کا استعمال کریں

    تاہم ، ((؟m) کثیر سطری موڈ کو فعال کیا جاسکتا ہے۔ کثیر سطری موڈ میں ، باقاعدہ اظہار انجن متبادل لائنوں کو بطور سٹرنگ سیکیورٹر استعمال کرتا ہے ، ^ متن کے آغاز یا ایک لائن کے آغاز سے ملتا ہے ، اور $ متن کے اختتام یا ایک لائن کے اختتام سے ملتا ہے۔

    اس مثال کو تبدیل کریں:

    باقاعدہ اظہار: ((?m) ^ [0-9a-zA-Z] {4,} $

    متوازن متن: a1b234ABC +a1b23=4ABC ABC123456

    میچ کے بعد نتائج:a1b234ABC+a1b23=4ABCABC123456تجزیہ: ((?m) ^ [0-9a-zA-Z]{4,} $ ہر سطر میں استعمال ہونے والے اعداد یا حروف کے ساتھ مل جائے گا ، اور اس کا عدد چار ہندسوں کے برابر سٹرنگ سے بڑا ہوگا۔

    نوٹ: اگر آپ کثیر سطری نمونہ استعمال کرتے ہیں تو ، ((؟m) کو باقاعدہ اظہار کے آغاز میں رکھنا ضروری ہے۔ (?m) باقاعدہ اظہار کی زیادہ تر تعینات میں معاون نہیں ہے۔ کچھ باقاعدہ اظہار کی تعینات میں بھی \A میچ سٹرنگ کے آغاز اور \Z میچ سٹرنگ کے اختتام کا استعمال معاون ہے۔ اگر معاون ہے تو ، ان میٹرکارکس کا کام ^ ، $ کے ساتھ ایک جیسا ہے۔ لیکن یہ میٹرکارکس معاوضہ استعمال نہیں کرسکتے ہیں ، لہذا یہ کثیر سطری موڈ میں استعمال نہیں ہوسکتے ہیں۔

اس مضمون کی ابتدا میں ، آپ کو باقاعدگی سے باقاعدہ اظہار سیکھنے کے لئے ایک اور مضمون دیکھنے کی ضرورت ہے۔

iOS_چوسکو سے نقل کیا گیا


مزید