سادهترین شکل تطبیق الگو که توسط این API پشتیبانی میشود، تطبیق یک رشتهی تحتاللفظی است. بهعنوان مثال اگر عبارت باقاعده foo و رشتهی ورودی foo باشد، تطبیق موفقیتآمیز خواهد بود چون رشتهها یکسان هستند. این مورد را با ابزار تست امتحان کنید:
Enter your regex: foo
Enter input string to search: foo
I found the text foo starting at index 0 and ending at index 3.
این تطبیق موفقیتآمیز بود. توجه کنید اگرچه رشتهی ورودی ۳ کاراکتر طول دارد، ایندکس شروع ۰ و ایندکس پایان ۳ است. طبق قرارداد، بازهها شامل ایندکس شروع و غیر شامل ایندکس پایان هستند، همانطور که در شکل زیر نشان داده شده است:
[دیاگرام: رشتهی تحتاللفظی foo با سلولهای شمارهگذاریشده و مقادیر ایندکس]هر کاراکتر در رشته در سلول خودش قرار دارد و موقعیتهای ایندکس بین سلولها هستند. رشتهی «foo» از ایندکس ۰ شروع و در ایندکس ۳ تمام میشود، حتی اگر خود کاراکترها فقط سلولهای ۰، ۱ و ۲ را اشغال کنند.
در تطبیقهای بعدی، همپوشانی مشاهده خواهید کرد؛ ایندکس شروع تطبیق بعدی برابر ایندکس پایان تطبیق قبلی است:
Enter your regex: foo
Enter input string to search: foofoofoo
I found the text foo starting at index 0 and ending at index 3.
I found the text foo starting at index 3 and ending at index 6.
I found the text foo starting at index 6 and ending at index 9.
این API همچنین از تعدادی کاراکتر خاص پشتیبانی میکند که نحوهی تطبیق الگو را تحت تأثیر قرار میدهند. عبارت باقاعده را به cat. (توجه به نقطهی انتهایی) و رشتهی ورودی را به cats تغییر دهید. خروجی به شکل زیر است:
Enter your regex: cat.
Enter input string to search: cats
I found the text cats starting at index 0 and ending at index 4.
تطبیق همچنان موفق است، حتی اگر نقطه «.» در رشتهی ورودی وجود نداشته باشد. موفق است چون نقطه یک متاکاراکتر است — کاراکتری با معنای خاص که توسط Matcher تفسیر میشود. متاکاراکتر «.» به معنای «هر کاراکتری» است و به همین دلیل در این مثال تطبیق موفق است.
متاکاراکترهای پشتیبانیشده توسط این API: <([{\\^-=$!|]})?*+.>
نکته: در برخی شرایط کاراکترهای خاص ذکرشده بهعنوان متاکاراکتر رفتار نمیکنند. با یادگیری نحو ساخت عبارات باقاعده با این موارد مواجه خواهید شد. اما میتوانید از این فهرست برای بررسی اینکه آیا یک کاراکتر خاص هرگز متاکاراکتر تلقی میشود استفاده کنید. بهعنوان مثال کاراکترهای@و#هرگز معنای خاصی ندارند.
دو روش برای وادار کردن متاکاراکتر به رفتار تحتاللفظی وجود دارد:
\\Q (شروع Quote) و \\E (پایان Quote).هنگام استفاده از این تکنیک، \\Q و \\E را میتوان در هر موقعیتی از عبارت قرار داد، به شرطی که \\Q اول بیاید.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/