آموزش Regex در برنامه نویسی اندروید
سلام دوستان امیدوارم حالتان خوب باشد در این سری از آموزش های برنامه نویسی اندروید به آموزش Regex در برنامه نویسی اندروید می پردازیم از Regex به منظور سرچ در String استفاده می شود اما سرچ فقط بخش کوچکی از Regex به شمار می آید قبلا Regex را به طور مفصل توضیح دادیم امروز به نحوه استفاده از Regex در برنامه نویسی اندروید خواهیم پرداخت با ما همراه باشید.
1 | boolean b = Pattern.matches("a*b", "aaaaab"); |
در اندروید هر زمان که از Pattern استفاده شود همان Regex در حال استفاده شدن است فقط نام آن متفاوت است در زیر ما مقداری های ورودی متود Matches رو خواهیم گفت دقت کنید می تواند کلی ورودی داشته باشد ولی ما فقط بخش Construct یا ساختار را خواهیم خورد (منظور همان ورودی اول است که به regex می گوید چه عملی باید انجام شود)
Regex یا Regular Expression چیست ؟
جدول Regex
مطابق (matches) | ساختار(construct) |
برابر با کارکتر x | x |
کارکتر \ | \\ |
برابر با مقدار اوکتال کارکتر | \0n |
هر کارکتری | . |
فقط عدد | \d |
فقط String عدد جزو آن نیست | \D |
کارکتر فاصله یا space | \s |
مخالف کارکتر فاصله یا space | \S |
تمامی کارکتر ها شامل [a-zA-Z_0-9] | \w |
هر چیزی به غیر از کارکتر های [a-zA-Z_0-9] | \W |
کارکتر های [a-z] کوچک | \p{Lower} |
کارکتر های [A-Z] بزرگ | \p{Upper} |
تمامی کدهای اسکی | \p{ASCII} |
عددهای Decimal [0-9] | \p{Digit} |
تمامی کارکتر های قابل چاپ | \p{Print} |
کارکتر های HexaDecimal | \p{XDigit} |
ابتدای خط | ^ |
انتهای خط | $ |
ابتدای ورودی | \A |
انتهای ورودی | \z |
X فقط یکبار تکرار شده باشد یا اصلا تکرار نشده باشد | X? |
X صفر یا چندبار تکرار شده باشد. | X* |
X یکبار یا دوبار تکرار شده باشد. | X+ |
X به مقدار n تکرار شده باشد. | X{n} |
X در آخر N بار تکرار شده باشد. | X{n,} |
یا X یا Y | X|Y |
دوستان مقادیر بالا همانطور که گفتیم فقط باید در بخش اول قرار داده شود و مقدار دوم همان String ماست که می خواهیم بررسیش کنیم در بالا اونهایی که بیشتر مهم بودن رو براتون قرار دادم در ادامه به یک مثال خواهیم پرداخت
به طور مثال در String ما مقدار
1 | I Will go to the shop at 12pm |
قرار دارد برای اینکه فقط مقدار 12pm را از آن جدا کنیم و با در نظر گرفتن اینکه مقدار 12 می تواند تغییر کند مثل زیر می شود.
1 2 3 4 | Pattern p = Pattern.compile(".*?(\\d{2}(am|pm)).*"); Matcher m = p.matcher("go to the shop at 12pm"); if(m.matches()) return m.group(1); |
مثال بالا را به شکل دیگری نیز می توان نوشت
1 2 3 4 | Pattern p = Pattern.compile("\\d{2}(am|pm)"); Matcher m = p.matcher("i will go to the shop at 12pm"); if(m.find()) return m.group(0) |
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام.
مطلب خوبی بود و استفاده کردم ولی حیف که خیلی سطحی به این موضوع پرداختید.
سلام و درود Regex بیش از حد گسترده است و شاید حتی در 10 پست هم نشود آن را مورد بررسی قرار داد در آینده به آن افزوده خواهد .
موفق باشید.