تا الان فقط به این موضوع علاقه داشتیم که آیا در یک موقعیت خاص در رشتهی ورودی تطبیقی پیدا میشود یا خیر. هرگز برایمان مهم نبود تطبیق در کجای رشته اتفاق میافتد.
میتوانید تطبیق الگوهای خود را دقیقتر کنید با مشخص کردن این اطلاعات از طریق Boundary Matcher ها. شاید مثلاً به دنبال یک کلمهی خاص باشید، اما فقط اگر در ابتدا یا انتهای یک خط ظاهر شود. یا شاید بخواهید بدانید تطبیق روی مرز یک کلمه یا در انتهای تطبیق قبلی اتفاق میافتد.
جدول زیر تمام Boundary Matcher ها را فهرست و توضیح میدهد.
| ساختار مرزی | توضیحات |
|---|---|
^ | ابتدای یک خط |
$ | انتهای یک خط |
\\b | مرز یک کلمه |
\\B | غیرمرز کلمه |
\\A | ابتدای ورودی |
\\G | انتهای تطبیق قبلی |
\\Z | انتهای ورودی به جز Line Terminator نهایی (در صورت وجود) |
\\z | انتهای ورودی |
مثالهای زیر نحوهی استفاده از Boundary Matcher های ^ و $ را نشان میدهند. همانطور که ذکر شد، ^ ابتدای خط و $ انتهای خط را تطبیق میدهد.
Enter your regex: ^dog$
Enter input string to search: dog
I found the text "dog" starting at index 0 and ending at index 3.
Enter your regex: ^dog$
Enter input string to search: dog
No match found.
Enter your regex: \s*dog$
Enter input string to search: dog
I found the text " dog" starting at index 0 and ending at index 15.
Enter your regex: ^dog\w*
Enter input string to search: dogblahblah
I found the text "dogblahblah" starting at index 0 and ending at index 11.
مثال اول موفق است چون الگو کل رشتهی ورودی را اشغال میکند. مثال دوم ناموفق است چون رشتهی ورودی فاصلهی اضافی در ابتدا دارد. مثال سوم عبارتی مشخص میکند که فاصلهی خالی نامحدود به دنبال «dog» در انتهای خط را مجاز میداند. مثال چهارم نیاز دارد «dog» در ابتدای خط و به دنبال آن تعداد نامحدودی کاراکتر کلمه حاضر باشد.
برای بررسی اینکه الگو روی مرز کلمه شروع و پایان مییابد (نه زیررشتهای در یک رشتهی طولانیتر)، از \\b در هر طرف استفاده کنید؛ مانند \\bdog\\b.
Enter your regex: \bdog\b
Enter input string to search: The dog plays in the yard.
I found the text "dog" starting at index 4 and ending at index 7.
Enter your regex: \bdog\b
Enter input string to search: The doggie plays in the yard.
No match found.
برای تطبیق عبارت روی غیرمرز کلمه، به جای آن از \\B استفاده کنید:
Enter your regex: \bdog\B
Enter input string to search: The dog plays in the yard.
No match found.
Enter your regex: \bdog\B
Enter input string to search: The doggie plays in the yard.
I found the text "dog" starting at index 4 and ending at index 7.
برای نیاز به تطبیق فقط در انتهای تطبیق قبلی، از \\G استفاده کنید:
Enter your regex: dog
Enter input string to search: dog dog
I found the text "dog" starting at index 0 and ending at index 3.
I found the text "dog" starting at index 4 and ending at index 7.
Enter your regex: \Gdog
Enter input string to search: dog dog
I found the text "dog" starting at index 0 and ending at index 3.
مثال دوم فقط یک تطبیق پیدا میکند چون وقوع دوم «dog» در انتهای تطبیق قبلی شروع نمیشود.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/