API کلاس Pattern شامل تعدادی کلاس کاراکتری ازپیشتعریفشدهی مفید است که میانبرهای راحتی برای عبارات باقاعدهی پرکاربرد ارائه میدهند:
| ساختار | توضیحات |
|---|---|
. | هر کاراکتری (ممکن است Line Terminator ها را تطبیق دهد یا ندهد) |
\\d | یک رقم: [0-9] |
\\D | غیر رقم: [^0-9] |
\\s | کاراکتر فاصله: [ \\t\\n\\x0B\\f\\r] |
\\S | کاراکتر غیرفاصله: [^\\s] |
\\w | کاراکتر کلمه: [a-zA-Z_0-9] |
\\W | کاراکتر غیرکلمه: [^\\w] |
در جدول بالا، هر ساختار ستون سمت چپ، میانبری برای کلاس کاراکتری ستون سمت راست است. بهعنوان مثال \\d به معنای بازهای از ارقام (۰-۹) و \\w به معنای کاراکتر کلمه (هر حرف کوچک، هر حرف بزرگ، خط زیر (Underscore) یا هر رقم) است. تا جای ممکن از کلاسهای ازپیشتعریفشده استفاده کنید. کد شما را خواناتر و خطاهای ناشی از کلاسهای کاراکتری نادرست را حذف میکنند.
ساختارهایی که با Backslash شروع میشوند، Escape Construct نام دارند. Escape Construct ها را در بخش رشتههای تحتاللفظی پیشنمایش کردیم. اگر از Escape Construct در یک رشتهی تحتاللفظی استفاده میکنید، باید Backslash دیگری قبل از Backslash اول قرار دهید تا رشته کامپایل شود. بهعنوان مثال:
private final String REGEX = "\\d"; // یک رقم واحد
در این مثال \\d عبارت باقاعده است؛ Backslash اضافی برای کامپایل کد لازم است. ابزار تست عبارات را مستقیماً از کنسول میخواند، بنابراین Backslash اضافی غیرضروری است.
مثالهای زیر نحوهی استفاده از کلاسهای کاراکتری ازپیشتعریفشده را نشان میدهند.
Enter your regex: .
Enter input string to search: @
I found the text "@" starting at index 0 and ending at index 1.
Enter your regex: .
Enter input string to search: 1
I found the text "1" starting at index 0 and ending at index 1.
Enter your regex: .
Enter input string to search: a
I found the text "a" starting at index 0 and ending at index 1.
Enter your regex: \d
Enter input string to search: 1
I found the text "1" starting at index 0 and ending at index 1.
Enter your regex: \d
Enter input string to search: a
No match found.
Enter your regex: \D
Enter input string to search: 1
No match found.
Enter your regex: \D
Enter input string to search: a
I found the text "a" starting at index 0 and ending at index 1.
Enter your regex: \s
Enter input string to search:
I found the text " " starting at index 0 and ending at index 1.
Enter your regex: \s
Enter input string to search: a
No match found.
Enter your regex: \S
Enter input string to search:
No match found.
Enter your regex: \S
Enter input string to search: a
I found the text "a" starting at index 0 and ending at index 1.
Enter your regex: \w
Enter input string to search: a
I found the text "a" starting at index 0 and ending at index 1.
Enter your regex: \w
Enter input string to search: !
No match found.
Enter your regex: \W
Enter input string to search: a
No match found.
Enter your regex: \W
Enter input string to search: !
I found the text "!" starting at index 0 and ending at index 1.
در سه مثال اول، عبارت باقاعده فقط . (متاکاراکتر «نقطه») است که «هر کاراکتری» را نشان میدهد. بنابراین تطبیق در هر سه مورد (کاراکتر @ بهصورت تصادفی انتخابشده، یک رقم و یک حرف) موفق است. مثالهای بعدی هر کدام از یک ساختار عبارت باقاعده از جدول کلاسهای کاراکتری ازپیشتعریفشده استفاده میکنند. میتوانید به این جدول مراجعه کرده و منطق هر تطبیق را بفهمید:
\\d تمام ارقام را تطبیق میدهد\\s فاصلهها را تطبیق میدهد\\w کاراکترهای کلمه را تطبیق میدهدهمچنین حرف بزرگ معنای عکس دارد:
\\D غیرارقام را تطبیق میدهد\\S غیرفاصلهها را تطبیق میدهد\\W کاراکترهای غیرکلمه را تطبیق میدهداین محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/