ریگولر ایکسپریشن ایک قسم کا پیٹرن ہے جسے ٹیکسٹ پر لاگو کیا جا سکتا ہے (اسٹرنگ، جاوا میں)۔ جاوا ریگولر ایکسپریشنز کو ملانے کے لیے
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
میتھڈ کال کرکے ایک آبجیکٹ ملتا ہے ۔ ایک بار جب ہم ان مراحل کو مکمل کر لیتے ہیں، اور اب ہمارے پاس کلاس کا ایک نمونہ ہے ، اب ہم چیک کر سکتے ہیں کہ پیٹرن ملا یا نہیں، اور اگر ایسا ہے تو، کس پوزیشن پر، وغیرہ۔ اگر پیٹرن پوری سٹرنگ سے مماثل ہے تو درست، ورنہ غلط۔ اگر پیٹرن سٹرنگ کے آغاز سے میل کھاتا ہے تو درست، دوسری صورت میں غلط۔ اگر پیٹرن متن کے کسی بھی حصے سے میل کھاتا ہے تو درست واپس آتا ہے۔
matcher
Pattern
Matcher 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|b
a یا 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 کے اختتام کے ساتھ شروع ہوا۔
GO TO FULL VERSION