উত্তর:
আপনি চেহারা-এগিয়ে দৃ as়তা ব্যবহার করতে পারেন:
(?!999)\d{3}
এই উদাহরণটি ছাড়াও তিনটি সংখ্যার সাথে মেলে 999
।
তবে আপনি যদি এই বৈশিষ্ট্যটির সাথে নিয়মিত প্রকাশের প্রয়োগ না করান ( নিয়মিত এক্সপ্রেশন ফ্লেভারগুলির তুলনা দেখুন ), আপনার সম্ভবত বুনিয়াদি বৈশিষ্ট্যগুলি নিয়ে একটি নিয়মিত প্রকাশ করতে হবে।
শুধুমাত্র বেসিক সিনট্যাক্সের সাথে একটি সামঞ্জস্যপূর্ণ নিয়মিত প্রকাশটি হ'ল:
[0-8]\d\d|\d[0-8]\d|\d\d[0-8]
এটি কোনও তিন অঙ্কের ক্রমের সাথেও মেলে 999
।
আপনি যদি একটি স্ট্রিং এ শব্দের সাথে শব্দের সাথে মিল রাখতে চান এবং একটি শব্দের সাথে বি না মিলেন For উদাহরণস্বরূপ: আপনার যদি একটি পাঠ্য থাকে:
1. I have a two pets - dog and a cat
2. I have a pet - dog
আপনি যদি কোনও পাঠ্য রেখার সন্ধান করতে চান যে কোনও পোষা প্রাণীর জন্য একটি কুকুর আছে এবং তার কাছে বিড়াল নেই, আপনি এই নিয়মিত প্রকাশটি ব্যবহার করতে পারেন:
^(?=.*?\bdog\b)((?!cat).)*$
এটি কেবল দ্বিতীয় লাইনের সন্ধান করবে:
2. I have a pet - dog
findstr
কমান্ডটি ব্যবহার করছে । এটি আপনাকে একটি রেজেেক্স সরঞ্জামে সক্ষমতা অর্জনের প্রত্যাশাগুলির কেবলমাত্র একটি ক্ষুদ্র উপসেট সরবরাহ করে; তাদের মধ্যে লুকোহেড নেই। (আমি নিজেই সন্ধানকারী ট্যাগটি যুক্ত করেছি))
প্যাটার্নের সাথে মিল করুন এবং ম্যাচের বুলিয়ান ফলাফলটি উল্টাতে হোস্ট ভাষাটি ব্যবহার করুন। এটি অনেক বেশি স্পষ্টত এবং রক্ষণাবেক্ষণযোগ্য হবে।
নোট নয়, এই প্রাচীন প্রশ্নের পুনরুত্থান কারণ এটির একটি সহজ সমাধান ছিল যা উল্লেখ করা হয়নি। ( রিজেক্স অনুগ্রহ অনুসন্ধানের জন্য কিছু গবেষণা করার সময় আপনার প্রশ্নটি খুঁজে পেয়েছে ))
আমি এমন পরিস্থিতির মুখোমুখি হয়েছি যেখানে আমাকে একটি (এ এবং ~ বি) প্যাটার্নটি মেলাতে হবে।
এর জন্য প্রাথমিক রেজেক্সটি ভীতিজনকভাবে সহজ: B|(A)
আপনি কেবল সামগ্রিক ম্যাচগুলিকে উপেক্ষা করুন এবং গ্রুপ 1 ক্যাপচারগুলি পরীক্ষা করুন, এতে A থাকবে A.
একটি উদাহরণ (রেজেক্সে এইচটিএমএল পার্স করা সম্পর্কিত সমস্ত দাবি অস্বীকার সহ): এ হচ্ছে অঙ্কগুলি, বি এর মধ্যে অঙ্কগুলি <a tag
রেজেক্স: <a.*?<\/a>|(\d+)
ডেমো (নীচের ডান প্যানেলে গ্রুপ 1 দেখুন)
উল্লেখ
\d
সঙ্গে [[:digit:]]
। প্রথম রেফারেন্সটিতে এটি পার্ল এবং পিএইচপি-র সাথে নির্দিষ্ট উল্লেখ করা হয়েছে: "পার্ল এবং পিএইচপি-তে নির্দিষ্ট সিনট্যাক্স ব্যবহার করে একটি ভিন্নতা পাওয়া যায় যা এটি সম্পাদন করে।"
একটি নিয়মিত ভাষার পরিপূরক এছাড়াও একটি নিয়মিত ভাষা, তবে এটি তৈরি করতে আপনাকে নিয়মিত ভাষার জন্য ডিএফএ তৈরি করতে হবে, এবং কোনও বৈধ রাষ্ট্র পরিবর্তনকে একটি ত্রুটিতে পরিণত করতে হবে। দেখুন এই একটি উদাহরণ জন্য। কোন পৃষ্ঠাটি বলে না এটি রূপান্তরিত হয় /(ac|bd)/
মধ্যে /(a[^c]?|b[^d]?|[^ab])/
। ডিএফএ থেকে নিয়মিত অভিব্যক্তিতে রূপান্তর তুচ্ছ নয়। যদি আপনি নিয়মিত অভিব্যক্তি অপরিবর্তিতভাবে ব্যবহার করতে পারেন এবং কোডটির শব্দার্থবিজ্ঞান পরিবর্তন করতে পারেন, যেমন পূর্বে প্রস্তাবিত।
replace
str.replace(/re/g, '')
, তারপরে তাদের সাথে পুনরায় যোগদানের দরকার নেই। এছাড়াও যদি আপনি একটি সুন্দর পেছনে ফেলে দেন? এর মতো str.replace(/\re\s?/g, '')
আপনি কোনও ডুপ্লিকেট স্পেসগুলি থেকে মুক্তি পেয়ে যাতে কোনও স্ট্রিংয়ের মাঝামাঝি কিছু প্রতিস্থাপন হতে পারে
আমার উত্তর এখানে আপনার সমস্যাটিও সমাধান করতে পারে:
https://stackoverflow.com/a/27967674/543814
$1
, আপনি গ্রুপ পড়তে হবে $2
।$2
অ ক্যাপচার প্রণীত সেখানে, যা আপনি এড়িয়ে চলতে হবে।উদাহরণ:
Regex.Match("50% of 50% is 25%", "(\d+\%)|(.+?)");
প্রথম ক্যাপচারিং গ্রুপটি যে প্যাটার্নটি আপনি এড়াতে চান তা নির্দিষ্ট করে। সর্বশেষ ক্যাপচারিং গ্রুপ অন্য সমস্ত কিছু ক্যাপচার করে। কেবল এই গ্রুপটি পড়ুন $2
,।
(B)|(A)
তারপরে কী গ্রুপ 2 ক্যাপচার করেছে তা ব্যবহার করুন ...
findstr
ট্যাগটি সরিয়েছি কারণ এখানে সমস্ত উত্তর ট্যাগের জন্য বৈধ নয়।