নিচের উদাহরণগুলো দেখায় কীভাবে জাভাতে রেগুলার এক্সপ্রেশন ব্যবহার করে একটি স্ট্রিং থেকে নম্বর বের করা যায়।
স্ট্রিং পার্স করে তথ্য বের করার ক্ষমতা প্রতিটি টেস্টারের জন্য একটি গুরুত্বপূর্ণ দক্ষতা। এটি বিশেষ করে API টেস্টিং করার সময় খুব উপকারী হয় যখন আপনাকে JSON বা XML রেসপন্স পার্স করতে হয়।
নিচের জাভা রেগুলার এক্সপ্রেশন উদাহরণগুলো একটি স্ট্রিং থেকে নম্বর বা ডিজিট বের করার ওপর ফোকাস করে।
একটি স্ট্রিং থেকে সব নম্বর বের করা
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("string1234more567string890");
while(m.find()) {
System.out.println(m.group());
}
}
}
আউটপুট:
1234
567
890
- জাভাতে String কীভাবে Int-এ কনভার্ট করবেন
- জাভাতে স্ট্রিং রিভার্স কীভাবে করবেন
- জাভাতে স্ট্রিং তুলনা কীভাবে করবেন
একটি স্ট্রিং থেকে nth ডিজিট বের করা
আপনি যদি একটি স্ট্রিং থেকে নির্দিষ্ট নম্বরগুলোই বের করতে চান তবে group() ফাংশনে একটি ইনডেক্স দিতে পারেন।
উদাহরণস্বরূপ, যদি আমরা string1234more567string890 স্ট্রিং থেকে শুধু দ্বিতীয় সেটের ডিজিট অর্থাৎ 567 বের করতে চাই, তবে নিচের কোড ব্যবহার করতে পারি:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
private static final Pattern p = Pattern.compile("[^\\d]*[\\d]+[^\\d]+([\\d]+)");
public static void main(String[] args) {
Matcher m = p.matcher("string1234more567string890");
if (m.find()) {
System.out.println(m.group(1)); // দ্বিতীয় মিলিত ডিজিট
}
}
}
আউটপুট:
567
প্যাটার্ন [^\d]*[\d]+[^\d]+([\d]+) এর ব্যাখ্যা:
- যে কোনো নন-ডিজিট ক্যারেক্টার উপেক্ষা করুন
- প্রথম নম্বরটি উপেক্ষা করুন
- আবার যেকোনো নন-ডিজিট ক্যারেক্টার উপেক্ষা করুন
- দ্বিতীয় নম্বরটি ক্যাপচার করুন
এক ট্যাগ অ্যাট্রিবিউট থেকে নম্বর বের করা
XML বা HTML ট্যাগ নিয়ে কাজ করার সময় কখনও কখনও একটি অ্যাট্রিবিউট থেকে মান বের করার প্রয়োজন হয়। উদাহরণস্বরূপ, নিচের ট্যাগটি বিবেচনা করুন:
<result name="response" numFound="9999" start="0">
9999 নম্বরটি বের করতে নিচের কোড ব্যবহার করতে পারি:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("numFound=\"([0-9]+)\"");
Matcher matcher = pattern.matcher("");
if (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
আউটপুট:
9999
ডিজিট এবং ক্যারেক্টার ধারণকারী একটি স্ট্রিং বের করা
জাভা রেগুলার এক্সপ্রেশন ব্যবহার করে একটি স্ট্রিংয়ের এমন অংশ বের করা যায় যেটিতে ডিজিট এবং ক্যারেক্টার উভয়ই থাকে। মনে করুন আমাদের একটি স্ট্রিং আছে Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT এবং আমরা 6B1BC0 বের করতে চাই যেটি ৬ ক্যারেক্টার দীর্ঘ:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[] args) {
Pattern p = Pattern.compile("YOUR SET ADDRESS IS\\s+([A-Z0-9]{6})");
Matcher n = p.matcher("YOUR SET ADDRESS IS 6B1BC0 TEXT");
if (n.find()) {
System.out.println(n.group(1)); // Prints 6B1BC0
}
}
}
আউটপুট:
6B1BC0
রেগুলার এক্সপ্রেশন দিয়ে কি-ভ্যালু পেয়ার বের করা
মান লেউ আমাদের কাছে এই ফরম্যাটের একটি স্ট্রিং থাকে bookname=testing&bookid=123456&bookprice=123.45 এবং আমরা bookid=123456 কি-ভ্যালু পেয়ারটি বের করতে চাই, তবে নিচের কোড ব্যবহার করব:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[] args) {
String s = "bookname=cooking&bookid=123456&bookprice=123.45";
Pattern p = Pattern.compile("(?<=bookid=)\\d+");
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group());
}
}
}
আউটপুট:
123456