عبارات باقاعده (RegEx)
«عبارات باقاعده (Regular Expression)» یک الگوی جست وجو است. با آن متن را می گردی یا عوض می کنی. در جاوا، بسته java.util.regex ابزار این کار است.
تعریف ساده عبارات باقاعده (RegEx)
«الگو (Pattern)» یعنی توضیحِ چیزی که می خواهی پیدا کنی. «مچِر (Matcher)» روی متن جست وجو می کند. اگر پیدا کند، find() مقدار درست برمی گرداند.
نکته: حروف ویژه مثل . و * معنی خاص دارند. برای بی اثرکردن، از بک اسلش استفاده می شود.
نمونه پایه با Pattern و Matcher
این کد بررسی می کند «w3schools» در متن هست یا نه. فلگِ CASE_INSENSITIVE بزرگی کوچکی را نادیده می گیرد.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Visit W3Schools!");
boolean matchFound = matcher.find();
if (matchFound) {
System.out.println("Match found");
} else {
System.out.println("Match not found");
}
}
}
گام های تمرینی
- الگو را به
\d+تغییر بده. - متن را شامل چند عدد کن.
- چاپ نتیجه را مشاهده کن.
کار با نتیجه پیدا شده (group)
متد group() همان بخشی را برمی گرداند که مطابق الگو بود. این برای نمایش متنِ یافت شده عالی است.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyClass {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Visit W3Schools!");
if (matcher.find()) {
String match = matcher.group();
System.out.println(match);
}
}
}
فلگ ها (Flags) مهم
فلگ ها روش جست وجو را عوض می کنند. مثلاً CASE_INSENSITIVE بزرگی کوچکی را نادیده می گیرد. LITERAL کاراکترهای ویژه را عادی می کند. UNICODE_CASE با حروف غیرانگلیسی هم هماهنگ می شود.
نکته: برای یادگیری عمیق ترِ «عبارات باقاعده در جاوا»، این صفحه را نشانه گذاری کن و بعد به بخش های دیگر سر بزن.
پیش نیازها را در انوتیشن ها مرور کن. سپس به نخ ها برو. همچنین، صفحه عبارات باقاعده در جاوا مرجع همین مبحث است.
جمع بندی سریع
- Pattern الگو را نگه می دارد.
- Matcher روی متن جست وجو می کند.
- find() وجود الگو را بررسی می کند.
- group() متنِ پیدا شده را می دهد.
- فلگ ها، روش جست وجو را تنظیم می کنند.