একটি alচ্ছিক চরিত্রের সাথে কীভাবে মিলে যায় রেগেক্স


147

আমার একটি রেজেক্স রয়েছে যা আমি ভেবেছিলাম এখন অবধি সঠিকভাবে কাজ করছে। আমার একটি optionচ্ছিক চরিত্রের সাথে মিল থাকা দরকার। এটি থাকতে পারে বা নাও থাকতে পারে।

এখানে দুটি স্ট্রিং রয়েছে। উপরের স্ট্রিংটি মিলছে যদিও নীচের অংশটি নেই। নিম্ন স্ট্রিংয়ে একটি অক্ষরের অনুপস্থিতি যা এটি ব্যর্থ করে চলেছে।

আমি একক চিঠিটি শুরু করার পরে 5 অঙ্কের পরে তা পেতে চাই এবং যদি তা না থাকে তবে বাকী স্ট্রিংটি অবিরত রাখুন। এই চিঠি হতে পারে A-Z

আমি যদি ([A-Z]{1}) +.*? +রেজেক্স থেকে অপসারণ করি তবে চিঠিটি বাদে এটি আমার প্রয়োজনীয় সমস্ত কিছুর সাথে মিলবে তবে এটি একধরণের গুরুত্বপূর্ণ।

20000      K               Q511195DREWBT            E00078748521
30000                      K601220PLOPOH            Z00054878524

এখানে আমি ব্যবহার করছি রেজেক্স।

/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/

উত্তর:


246

ব্যবহার

[A-Z]?

চিঠিটি .চ্ছিক করতে। {1}অপ্রয়োজনীয়। (অবশ্যই আপনিও লিখতে পারতেন [A-Z]{0,1}যার অর্থ একই হবে তবে এটি ?সেখানে যা রয়েছে)

আপনি আপনার রেজেক্সকে উন্নত করতে পারেন

^([0-9]{5})+\s+([A-Z]?)\s+([A-Z])([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})

এবং, যেহেতু বেশিরভাগ রেজেক্স উপভাষায়, \dএকই রকম [0-9]:

^(\d{5})+\s+([A-Z]?)\s+([A-Z])(\d{3})(\d{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])\d{3}(\d{4})(\d{2})(\d{2})

তবে: আপনার কি 11 টি পৃথক ক্যাপচারিং গ্রুপ দরকার? এবং যদি তা হয় তবে আপনি চতুর্থ থেকে শেষ সংখ্যার গোষ্ঠীটি ক্যাপচার করবেন না কেন?


টিম, আমি সত্যই নিশ্চিত নই যেহেতু আমি এই রেজেক্সটি লিখিনি। আমি এখনও রেগেক্সে বেশ নতুন। আপনি যদি এটি লেখার আরও ভাল উপায় দেখতে পান তবে আমি পরামর্শের জন্য উন্মুক্ত।
জিম

1
টিম, আপনার উদাহরণটি উভয় স্ট্রিংয়ের জন্য কাজ করে যে আমার কাছে সেই অবস্থানে কোনও চিঠি আছে কি না। ধন্যবাদ।
জিম

26

আপনি একক বর্ণকে এর ?পরে যুক্ত করে optionচ্ছিক করতে পারেন :

([A-Z]{1}?)

কোয়ান্টিফায়ারটি {1}রিডানড্যান্ট তাই আপনি এটিকে ফেলে দিতে পারেন।


ধন্যবাদ কোডআডিক্ট। প্রশ্ন চিহ্নটি `+। * এর স্থান নেয়? + + `?
জিম

গ্রেপ রেজেক্স ব্যবহার করার সময় আপনি {1} (গ্রেপ: চেহারার পিছনে দৃ fixed় দৈর্ঘ্য নির্ধারণ না করা) বাদ দিলে আপনি একটি ত্রুটি পাবেন। যাতে এটা ত্যাগ করার জন্য একটি মামলা আছে।
Zunderscore

6

আপনাকে একক বর্ণকে optionচ্ছিক হিসাবে চিহ্নিত করতে হবে:

([A-Z]{1})? +.*? +

বা পুরো অংশটি .চ্ছিক করুন

(([A-Z]{1}) +.*? +)?

1
স্টিফান, আমি চিঠিটি সম্পূর্ণ alচ্ছিক করতে চাই। আমি উভয় চেষ্টা করেছিলাম কিন্তু এটি এখনও কিছুই মেলে না। আমি নিশ্চিত যে আমার এটি ভুল হয়েছে। আপনার উদাহরণটিকে স্ট্রিংয়ের সাথে অন্তর্ভুক্ত করতে আপনি এটি সংশোধন করতে পারেন?
জিম

0

আপনি নিজের মামলার মতো নকশাকৃত সরল রেজেক্স ব্যবহার করতে পারেন (.*)\/(([^\?\n\r])*)যেখানে $2আপনি যা চান তার সাথে মেলে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.