Spring Expression Language (SpEL), Spring Framework-এর একটি শক্তিশালী ভাষা, যা আপনাকে Spring Beans-এর প্রপার্টি এবং মেথডের সাথে এক্সপ্রেশন লেখার সুযোগ দেয়। SpEL-এ Regular Expressions (RegEx) ব্যবহার করে স্ট্রিংগুলির সাথে উন্নত প্যাটার্ন ম্যাচিং এবং ম্যানিপুলেশন করা যায়। SpEL-এর মাধ্যমে আপনি স্ট্রিং-ভিত্তিক ডেটার উপর regex-এ কাজ করতে পারবেন যা আপনাকে উন্নত ফিল্টারিং, ভ্যালিডেশন, বা টেক্সট প্রসেসিং করতে সহায়ক।
SpEL Regular Expressions-এর সাথে কাজ করার জন্য SpEL এর মধ্যে কিছু বিশেষ ফাংশন এবং পদ্ধতি রয়েছে, যেমন matches(), replaceAll(), ইত্যাদি। এই পদ্ধতিগুলো স্ট্রিং এবং প্যাটার্নের মধ্যে মেলানো বা প্রতিস্থাপন করতে ব্যবহৃত হয়।
SpEL এ Regular Expressions এর ব্যবহার
১. matches() ফাংশন
SpEL এ matches() ফাংশন ব্যবহার করে আপনি একটি স্ট্রিং প্যাটার্নের সাথে ম্যাচ করাতে পারেন। এটি স্ট্রিং এবং RegEx প্যাটার্নের মধ্যে ম্যাচিং চেক করে। যদি স্ট্রিংটি প্যাটার্নের সাথে মেলে, তবে এটি true রিটার্ন করবে, অন্যথায় false।
উদাহরণ:
@Configuration
public class AppConfig {
@Bean
public String regexMatchExample() {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// Regular Expression to match an email pattern
String emailPattern = "^[A-Za-z0-9+_.-]+@(.+)$";
// Checking if the string matches the pattern
Boolean isValid = (Boolean) parser.parseExpression("'test@example.com'.matches('" + emailPattern + "')").getValue(context);
return "Is valid email? " + isValid;
}
}
এখানে, SpEL ব্যবহার করে একটি ইমেল ঠিকানার প্যাটার্ন চেক করা হয়েছে। matches() মেথডের মাধ্যমে এটি যাচাই করে, যদি স্ট্রিংটি ইমেল প্যাটার্নের সাথে মেলে, তবে true রিটার্ন করবে।
২. replaceAll() ফাংশন
SpEL এ replaceAll() ফাংশন ব্যবহার করে আপনি একটি স্ট্রিং-এর নির্দিষ্ট অংশকে একটি নতুন স্ট্রিং দ্বারা প্রতিস্থাপন করতে পারেন, যেখানে আপনি একটি RegEx প্যাটার্ন ব্যবহার করতে পারেন।
উদাহরণ:
@Configuration
public class AppConfig {
@Bean
public String regexReplaceExample() {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// Replacing all digits with a character
String result = (String) parser.parseExpression("'123ABC456'.replaceAll('[0-9]', '#')").getValue(context);
return "Replaced String: " + result;
}
}
এই উদাহরণে, replaceAll() ব্যবহার করে, সব ডিজিটগুলিকে # দ্বারা প্রতিস্থাপন করা হয়েছে। স্ট্রিং '123ABC456' এর মধ্যে সব সংখ্যাকে # দ্বারা প্রতিস্থাপন করবে, ফলে আউটপুট হবে: "###ABC###"।
৩. find() ফাংশন
SpEL এর find() ফাংশন ব্যবহার করে একটি স্ট্রিং এর মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করা যায়। এটি RegEx প্যাটার্নের সঙ্গে স্ট্রিং মেলাতে সাহায্য করে এবং প্রথম ম্যাচের অবস্থান রিটার্ন করে।
উদাহরণ:
@Configuration
public class AppConfig {
@Bean
public String regexFindExample() {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// Finding the position of first occurrence of a number
Integer position = (Integer) parser.parseExpression("'The price is 100 dollars'.find('\\d+')").getValue(context);
return "Position of first number: " + position;
}
}
এখানে, find() ব্যবহার করে স্ট্রিং 'The price is 100 dollars'-এ প্রথম সংখ্যা (100) খুঁজে বের করা হয়েছে, এবং তার অবস্থান রিটার্ন করা হয়েছে।
SpEL Regular Expressions এর সুবিধা
- স্ট্রিং ভ্যালিডেশন: আপনি সহজেই স্ট্রিং ভ্যালিডেশন করতে পারবেন যেমন ইমেল ঠিকানা, ফোন নম্বর বা অন্যান্য প্যাটার্ন যাচাই করা।
- ডেটা ক্লিনিং এবং প্রসেসিং: ডেটার মধ্যে বিশেষ ধরনের প্যাটার্ন খুঁজে বের করতে এবং সেগুলিকে প্রতিস্থাপন করতে সহায়ক।
- ফিল্টারিং এবং ম্যাচিং: স্পেসিফিক প্যাটার্নের সাথে স্ট্রিং মেলাতে এবং সংশ্লিষ্ট তথ্য বের করতে ব্যবহৃত হয়।
সারাংশ
Spring Expression Language (SpEL) ব্যবহার করে আপনি সহজেই RegEx প্যাটার্নগুলির সাথে কাজ করতে পারেন, যেমন স্ট্রিং ম্যাচিং, প্রতিস্থাপন, এবং খোঁজা। SpEL-এর matches(), replaceAll(), এবং find() ফাংশনগুলি আপনাকে স্ট্রিংগুলির মধ্যে RegEx প্যাটার্ন খুঁজে বের করতে এবং প্রক্রিয়া করতে সহায়তা করে। এটি ডাইনামিক কোডে টেক্সট ম্যানিপুলেশন এবং ভ্যালিডেশন সহজ করে তোলে, বিশেষ করে Spring Beans-এর মধ্যে বিভিন্ন ধরণের লজিক প্রয়োগ করতে।