JavaRush /جاوا بلاگ /Random-UR /جاوا میں باقاعدہ اظہار
terranum
سطح
Milan

جاوا میں باقاعدہ اظہار

گروپ میں شائع ہوا۔
RegExریگولر ایکسپریشن ایک قسم کا پیٹرن ہے جسے ٹیکسٹ پر لاگو کیا جا سکتا ہے (اسٹرنگ، جاوا میں)۔ جاوا ریگولر ایکسپریشنز کو ملانے کے لیے 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:فائنڈر آبجیکٹ ایک انجن ہے جو پیٹرن کی ترجمانی کرتا ہے اور ان پٹ سٹرنگ پر مماثل آپریشن کرتا ہے۔ ایک طبقے کی طرح Pattern، Matcherاس کا کوئی عوامی تعمیر کنندہ نہیں ہے۔ آپ کو کلاس آبجیکٹ پر Matcherمیتھڈ کال کرکے ایک آبجیکٹ ملتا ہے ۔ ایک بار جب ہم ان مراحل کو مکمل کر لیتے ہیں، اور اب ہمارے پاس کلاس کا ایک نمونہ ہے ، اب ہم چیک کر سکتے ہیں کہ پیٹرن ملا یا نہیں، اور اگر ایسا ہے تو، کس پوزیشن پر، وغیرہ۔ اگر پیٹرن پوری سٹرنگ سے مماثل ہے تو درست، ورنہ غلط۔ اگر پیٹرن سٹرنگ کے آغاز سے میل کھاتا ہے تو درست، دوسری صورت میں غلط۔ اگر پیٹرن متن کے کسی بھی حصے سے میل کھاتا ہے تو درست واپس آتا ہے۔ matcherPatternMatcher 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|ba یا 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