নিম্নলিখিতটি মেলানো উচিত:
AAA123
ABCDEFGH123
XXXX123
আমি কি করতে পারি: ".*123"
?
নিম্নলিখিতটি মেলানো উচিত:
AAA123
ABCDEFGH123
XXXX123
আমি কি করতে পারি: ".*123"
?
উত্তর:
হ্যা, তুমি পারো. এটা কাজ করা উচিত।
.
= কোন চর\.
= আসল বিন্দুর অক্ষর.?
= .{0,1}
= যেকোন চরের শূন্য বা এক বারের সাথে মেলে.*
= .{0,}
= যেকোন চর শূন্য বা তার বেশি বারের সাথে মেলে.+
= .{1,}
= যেকোন চরের সাথে এক বা একাধিক বার মিলবেহ্যাঁ এটি কার্যকর হবে, যদিও নোটটি .
নতুন লাইনের সাথে মেলে না তবে অভিব্যক্তিটি সংকলনের সময় আপনি ডটল পতাকাটি পাস না করে:
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();
.
নতুন লাইনের সাথে মিলবে। আমি আপনার উত্তর পড়তে পেরে আনন্দিত, আমার এটি ব্যবহার করা দরকার!
{.,\n,\r,\u2028,\u2029,\u0085}
একেবারে কোনও চরিত্রের সাথে মিল রাখতে ব্যবহার করতে হতে পারে (ইউনিকোড অক্ষরগুলি অতিরিক্ত লাইন-টার্মিনেটিং অক্ষরগুলি .
জাভাতে মেলেনি ) তবে কেবল {.,\n,\r}
বেশিরভাগ পাঠ্য ফাইলের জন্যই কাজ করবে।
[\s\S]
কোনো চরিত্র মিলে যদি আপনি DOTALL ব্যবহার করতে পারবেন না একটি জনপ্রিয় উপায়।
(?:.|\\v)*
, জেডিকে -৩373799৯৯৩ এর কারণে ব্যবহার করবেন না ।
প্রচুর পরিশীলিত রেজেক্স টেস্টিং এবং ডেভলপমেন্ট সরঞ্জাম রয়েছে তবে জাভাতে যদি আপনি কেবল একটি সাধারণ পরীক্ষার জোতা চান তবে আপনার সাথে খেলাটি এখানে একটি:
String[] tests = {
"AAA123",
"ABCDEFGH123",
"XXXX123",
"XYZ123ABC",
"123123",
"X123",
"123",
};
for (String test : tests) {
System.out.println(test + " " +test.matches(".+123"));
}
এখন আপনি সহজেই নতুন টেস্টকেসগুলি যুক্ত করতে পারেন এবং নতুন নিদর্শনগুলি চেষ্টা করতে পারেন। Regex অন্বেষণ মজা করুন।
না, *
শূন্য বা আরও বেশি অক্ষরের সাথে মিলবে। আপনার ব্যবহার করা উচিত +
, যা পরিবর্তে এক বা একাধিকের সাথে মেলে।
এই অভিব্যক্তিটি আপনার পক্ষে আরও ভাল কাজ করতে পারে: [A-Z]+123
আমি এটিকে এনকোড করার সবচেয়ে সাধারণ উপায়টি হ'ল এমন একটি চরিত্র শ্রেণীর সাথে যার সদস্যরা সমস্ত সম্ভাব্য অক্ষরের সেটটির বিভাজন তৈরি করে।
সাধারণত মানুষ লিখতে যে হিসাবে [\s\S]
(হোয়াইটস্পেস বা অ- হোয়াইটস্পেস), যদিও [\w\W]
, [\d\D]
ইত্যাদি সব কাজ করবে।
.*
এবং.+
নতুন লাইন ব্যতীত যে কোনও চরিত্রের জন্য।
কেবলমাত্র আপনি নতুন লাইন অন্তর্ভুক্ত করতে চেয়েছিলেন, নিম্নলিখিত ভাষাগুলি সেই ভাষাগুলির জন্যও কাজ করতে পারে যা দ্বিগুণ প্রস্থান যেমন জাভা বা সি ++ এর মতো প্রয়োজন:
[\\s\\S]*
[\\d\\D]*
[\\w\\W]*
শূন্য বা আরও বেশি বারের জন্য, বা
[\\s\\S]+
[\\d\\D]+
[\\w\\W]+
এক বা একাধিকবার
সি #, পিএইচপি, রুবি, পিইআরএল, পাইথন, জাভাস্ক্রিপ্টের মতো কয়েকটি ভাষার জন্য ডাবল পলায়নের প্রয়োজন নেই:
[\s\S]*
[\d\D]*
[\w\W]*
[\s\S]+
[\d\D]+
[\w\W]+
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex_1 = "[\\s\\S]*";
final String regex_2 = "[\\d\\D]*";
final String regex_3 = "[\\w\\W]*";
final String string = "AAA123\n\t"
+ "ABCDEFGH123\n\t"
+ "XXXX123\n\t";
final Pattern pattern_1 = Pattern.compile(regex_1);
final Pattern pattern_2 = Pattern.compile(regex_2);
final Pattern pattern_3 = Pattern.compile(regex_3);
final Matcher matcher_1 = pattern_1.matcher(string);
final Matcher matcher_2 = pattern_2.matcher(string);
final Matcher matcher_3 = pattern_3.matcher(string);
if (matcher_1.find()) {
System.out.println("Full Match for Expression 1: " + matcher_1.group(0));
}
if (matcher_2.find()) {
System.out.println("Full Match for Expression 2: " + matcher_2.group(0));
}
if (matcher_3.find()) {
System.out.println("Full Match for Expression 3: " + matcher_3.group(0));
}
}
}
Full Match for Expression 1: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 2: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 3: AAA123
ABCDEFGH123
XXXX123
আপনি যদি এক্সপ্রেশনটি অন্বেষণ করতে চান তবে এটি regex101.com এর ডানদিকের প্যানেলে ব্যাখ্যা করা হয়েছে । আপনি যদি চান, আপনি এই লিঙ্কটিতেও দেখতে পারেন , কীভাবে এটি কিছু নমুনার ইনপুটগুলির সাথে মেলে।
jex.im নিয়মিত এক্সপ্রেশন ভিজ্যুয়ালাইজ করে:
(\W|\w)*
ডাবল পলায়নের পরিবর্তে
উদাহরণস্বরূপ সমস্যার নির্দিষ্ট সমাধান: -
ব্যবহার করে দেখুন [A-Z]*123$
ম্যাচ হবে 123
, AAA123
, ASDFRRF123
। ক্ষেত্রে আপনার 123
ব্যবহারের আগে কমপক্ষে একটি চরিত্রের প্রয়োজন [A-Z]+123$
।
প্রশ্নের সাধারণ সমাধান (নিয়মিত প্রকাশের "কোনও চরিত্রের সাথে কীভাবে" মেলে)
[\w|\W]{min_char_to_match,}
।[\S]{min_char_to_match,}
।[^]
নিউলাইন সহ যে কোনও চরিত্রের সাথে মেলে। [^
অক্ষর]
ঐ ছাড়া সব অক্ষরের সাথে মেলে অক্ষর । যদি অক্ষর খালি থাকে, এটা সব অক্ষরের সাথে মেলে।
জাভাস্ক্রিপ্ট উদাহরণ:
/a[^]*Z/.test("abcxyz \0\r\n\t012789ABCXYZ") // Returns ‘true’.
আমি এটি সর্বদা বিন্দুতে কাজ করি মানে কোনও চর। একক লাইন মোড ব্যতিক্রম। \p{all}
হতে হবে
String value = "|°¬<>!\"#$%&/()=?'\\¡¿/*-+_@[]^^{}";
String expression = "[a-zA-Z0-9\\p{all}]{0,50}";
if(value.matches(expression)){
System.out.println("true");
} else {
System.out.println("false");
}