باقاعده اظهار هڪ قسم جو نمونو آهي جيڪو متن تي لاڳو ڪري سگهجي ٿو (String، Java ۾). جاوا مهيا ڪري ٿو
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:
Finder اعتراض هڪ انجڻ آهي جيڪو نموني جي تشريح ڪري ٿو ۽ ان پٽ اسٽرنگ تي ملندڙ عملن کي انجام ڏئي ٿو.
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
الف يا ب سان ملندو آهي.
(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