রেগুলার এক্সপ্রেশনে প্যαρেন্থেসিস দিয়ে এক্সপ্রেশনগুলো আলাদা করে ম্যাচড গ্রুপ তৈরি করা যায়। নিচের রেগুলার এক্সপ্রেশনে প্রথম গ্রুপটি ডিজিট এবং দ্বিতীয় গ্রুপটি ইংরেজি অক্ষরকে মিল করে:
(\d)([A-Za-z])
সংক্ষেপে, এটি ইনপুট স্ট্রিং-এ সেই অংশকে মিল করে যেখানে একটি ডিজিটের পর একটি অক্ষর আছে।
যেহেতু $1 গ্রুপ ১ এবং $2 গ্রুপ ২ নির্দেশ করে, তাই উপরের জাভা রেগুলার এক্সপ্রেশনকে $1 $2 দিয়ে রিপ্লেস করলে (String ক্লাসের replace() মেথড ব্যবহার করে) একটি সংখ্যা ও শব্দের মাঝে স্পেস যোগ হবে।
উদাহরণ ১
import java.util.Scanner;
public class SampleTest {
public static void main(String args[]) {
String regex = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])";
Scanner sc = new Scanner(System.in);
System.out.println("Enter input text: ");
String input = sc.nextLine();
String result = input.replaceAll("(\\d)([A-Za-z])", "$1 $2");
System.out.println(result);
}
}
আউটপুট
Enter input text: 21This 23is 56sample 99text
21 This 23 is 56 sample 99 text
একইভাবে, আপনি দिये गये টেক্সটে সংখ্যা ও অক্ষরের মাঝে স্পেস যোগ করতে পারেন, অর্ডার যেন যেকোনো হোক। उसके জন্য নিচের এক্সপ্রেশনকে স্পেস দিয়ে রিপ্লেস করতে হবে:
(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])
উদাহরণ ২
import java.util.Scanner;
public class SampleTest {
public static void main(String args[]) {
String regex = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])";
Scanner sc = new Scanner(System.in);
System.out.println("Enter input text: ");
String input = sc.nextLine();
String result = input.replaceAll(regex, " ");
System.out.println(result);
}
}
আউটপুট
Enter input text: 21This23is56sample99text
21 This 23 is 56 sample 99 text