সাবএক্সপ্রেশন/মেটাক্যারেক্টার "[^...]" ব্র্যাকেটের ভিতরের ক্যারেক্টারগুলোর বাদে যেকোনো একক ক্যারেক্টার ম্যাচ করে (নেগেটেড ক্যারেক্টার ক্লাস)।
উদাহরণ ১: নির্দিষ্ট ক্যারেক্টার বাদে সব গণনা
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SpecifiedCharacters {
public static void main(String args[]) {
String regex = "[^hwtyoupi]";
String input = "Hi how are you welcome to Tutorialspoint";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
int count = 0;
while (m.find()) {
count++;
}
System.out.println("ম্যাচের সংখ্যা: " + count);
}
}
আউটপুট
ম্যাচের সংখ্যা: 21
ব্যাখ্যা: h,w,t,y,o,u,p,i — এই ক্যারেক্টারগুলো বাদে বাকি সব (স্পেস, বড় হাতের অক্ষর, অন্যান্য ছোট হাতের অক্ষর) ম্যাচ করেছে।
উদাহরণ ২: ইংরেজি অক্ষর না থাকা স্ট্রিং খুঁজা
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String args[]) {
// যেকোনো জায়গায় নন-অ্যালফাবেট থাকা স্ট্রিং
String regex = "^.*[^a-zA-Z].*$";
Scanner sc = new Scanner(System.in);
System.out.println("৫টি ইনপুট স্ট্রিং দিন: ");
String input[] = new String[5];
for (int i = 0; i < 5; i++) {
input[i] = sc.nextLine();
}
Pattern p = Pattern.compile(regex);
System.out.println("ইংরেজি অক্ষর না থাকা স্ট্রিং/শব্দগুলো: ");
for (int i = 0; i < 5; i++) {
Matcher m = p.matcher(input[i]);
if (m.find()) {
System.out.println(m.group());
}
}
}
}
আউটপুট
৫টি ইনপুট স্ট্রিং দিন: 1234*5 *&% sample test data23 ইংরেজি অক্ষর না থাকা স্ট্রিং/শব্দগুলো: 1234*5 *&%
নোট: ^ ক্যারেক্টার ক্লাসের শুরুতে থাকলে নেগেশন বোঝায়। অন্য জায়গায় স্ট্রিংয়ের শুরু বোঝায়।