عبارات با قاعده در جاوا
در این بخش به بررسی عبارات با قاعده در جاوا می پردازیم، عبارات با قاعده (Regular Expressions یا Regex) ابزاری بسیار قدرتمند در پردازش متون هستند که امکان جستجو، تطبیق و ویرایش دادههای متنی را با الگوهای خاص فراهم میکنند. این ابزارها در زبانهای برنامهنویسی مختلف از جمله Java، به برنامهنویسان اجازه میدهند که بهراحتی رشتههای متنی پیچیده را جستجو کنند و آنها را با الگوهای مشخص تطبیق دهند. از جمله کاربردهای رایج Regex در برنامهنویسی میتوان به اعتبارسنجی ایمیلها، شماره تلفنها، جستجوی الگوهای خاص در فایلها، و تبدیل دادههای متنی اشاره کرد.
در زبان Java، کتابخانه java.util.regex
امکانات کاملی برای استفاده از عبارات با قاعده فراهم میکند. این کتابخانه به شما این امکان را میدهد که الگوهای پیچیدهای را در رشتههای متنی جستجو کرده و آنها را بر اساس نیاز خود پردازش کنید. در این مقاله، به بررسی نحوه استفاده از عبارات با قاعده در Java پرداخته و با مثالهای مختلف، نحوه کاربرد آنها را توضیح خواهیم داد.
معرفی عبارات با قاعده (Regex) در Java
در Java، برای کار با عبارات با قاعده، کلاسهای اصلی Pattern
و Matcher
وجود دارند. کلاس Pattern
بهعنوان نماینده یک الگوی Regex در نظر گرفته میشود و کلاس Matcher
وظیفه تطبیق این الگوها را با رشتههای ورودی برعهده دارد. برای شروع کار با Regex، ابتدا باید یک الگو (Pattern) تعریف کرده و سپس آن را با استفاده از یک شی از نوع Matcher
بر روی دادهها اعمال کنیم.
نحوه تعریف الگو در Java
الگوهای عبارات با قاعده در Java معمولاً با استفاده از متد Pattern.compile()
تعریف میشوند. این متد یک رشته حاوی الگوی مورد نظر را بهعنوان ورودی دریافت کرده و آن را به یک شیء Pattern
تبدیل میکند. این شیء میتواند برای جستجو یا تطبیق با رشتههای دیگر استفاده شود.
در این مثال، الگوی "a*b"
نشاندهنده یک رشته است که ممکن است شامل تعداد نامحدودی از حروف 'a'
و در نهایت یک حرف 'b'
باشد. با اجرای این برنامه، چون رشته ورودی "aaab"
این الگو را برآورده میکند، خروجی true
خواهد بود.
استفاده از متدهای مختلف برای تطبیق و جستجو
کلاس Matcher
دارای متدهای مختلفی برای جستجو و تطبیق الگوها است. برخی از این متدها عبارتند از:
matches()
: بررسی میکند که آیا رشته ورودی دقیقاً با الگو تطبیق دارد یا خیر.find()
: جستجو میکند تا ببیند که آیا الگو در رشته ورودی وجود دارد یا خیر.group()
: زمانی که تطبیق انجام شده باشد، میتوان از این متد برای دسترسی به رشتهای که با الگو تطبیق داشته است استفاده کرد.
در این مثال، الگوی "\\d+"
برای جستجوی اعداد در رشته ورودی بهکار رفته است. با اجرای این برنامه، عدد 123
از داخل رشته استخراج خواهد شد.
اجزای اصلی الگوهای Regex
برای نوشتن عبارات با قاعده مؤثر و قدرتمند، آشنایی با اجزای مختلف الگوها ضروری است. در این بخش، به بررسی برخی از مهمترین اجزای الگوهای Regex خواهیم پرداخت.
حروف خاص و متا-کاراکترها
.
: هر کاراکتری بهجز کاراکتر جدید (newline).^
: نشاندهنده شروع رشته.$
: نشاندهنده انتهای رشته.*
: تکرار صفر یا بیشتر از الگوی قبلی.+
: تکرار یک یا بیشتر از الگوی قبلی.?
: الگوی قبلی یک یا صفر بار تکرار میشود.|
: یا (OR) برای جستجوی چند الگوی مختلف.
مثال:
در این مثال، الگوی "^a.b$"
به این معنی است که رشته باید با حرف 'a'
شروع شود و با حرف 'b'
پایان یابد و هر چیزی در بین این دو حرف میتواند باشد.
گروهبندی و انتخابها
یکی از ویژگیهای مفید عبارات با قاعده، امکان گروهبندی و انتخابهای شرطی است. با استفاده از پرانتز میتوان بخشهایی از الگو را گروهبندی کرده و سپس از آنها در سایر قسمتهای برنامه استفاده کرد. همچنین با استفاده از علامت |
میتوان چندین الگو را بهطور همزمان جستجو کرد.
در این مثال، اگر رشته ورودی حاوی یکی از دو الگوی "abc"
یا "def"
باشد، از آن استفاده میشود.
استفاده از کاراکترهای خاص
\\d
: هر رقم عددی (معادل [0-9]).\\w
: هر حرف الفبایی، عدد یا آندرلاین (معادل [a-zA-Z0-9_]).\\s
: هر فضای سفید (شامل فضا، تب و خط جدید).\\b
: مرز کلمه.
مثال:
در این مثال، الگوی "\\d{2,4}"
برای جستجو در میان اعداد با طول ۲ تا ۴ رقم استفاده شده است.
عبارات با قاعده (Regex) ابزارهای قدرتمند و بسیار مفیدی برای پردازش متون در برنامهنویسی هستند. زبان Java با کتابخانه java.util.regex
امکانات کاملی برای استفاده از این ابزار فراهم کرده است. با استفاده از Regex، برنامهنویسان میتوانند الگوهای پیچیدهای را در رشتههای متنی جستجو کنند، تطبیق دهند و دادهها را پردازش کنند. در این مقاله، به بررسی نحوه تعریف و استفاده از الگوهای Regex، اجزای مختلف آن، و کاربردهای رایج آن در زبان Java پرداخته شد. این ابزار به شما این امکان را میدهد که بهطور مؤثرتر با دادههای متنی کار کنید و راهحلهای بهینهتری برای مشکلات مختلف پردازش دادهها پیدا کنید.
منابع
- Oracle Documentation: Regular Expressions in Java Oracle
- Java Regular Expressions TutorialsPoint
آیا این مطلب برای شما مفید بود ؟