নিয়মিত অভিব্যক্তি ক্রস মিলছে


21

এখানে আপনার কাজটি নিয়মিত দুটি এক্সপ্রেশন লিখতে হয়, যার প্রতিটি একে অপরের সাথে মেলে তবে নিজের সাথে মেলে না।

উভয় নিয়মিত প্রকাশের এই ফর্ম থাকা উচিত:

/pattern/optional-flags

এটিও সেই রূপ যা তাদের সাথে মিলিত হওয়া উচিত।

সংক্ষিপ্ততম সমাধানটি জয়লাভ করে। সমাধান দৈর্ঘ্য দুটি স্ল্যাশ এবং পতাকা সহ নিয়মিত প্রকাশের উভয় অক্ষরের যোগফল হিসাবে গণনা করা হয়।

আপনার পছন্দের একটি রেজেক্স সিনট্যাক্স স্ট্যান্ডার্ড ব্যবহার করুন বা কোনও প্রোগ্রামিং ভাষা নির্দিষ্ট করুন, যখন এটি কোনও তাত্পর্য তৈরি করে।

আনন্দ কর!


অন্য রেজেক্সের স্ল্যাশ এবং পতাকাগুলির সাথেও কি রেজেক্সের মিল আছে?
প্রোগ্রামফক্স

@ প্রোগ্রামফক্স হ্যাঁ, আমি এটি পরিষ্কার করার জন্য একটি লাইন যুক্ত করেছি।
0

আপনি ম্যাচ সংজ্ঞায়িত করতে পারেন? অর্থাত্ রেজেক্স /a/মিলছে abc?
দ্য হাট

2
@ দ্য গুইউইথহ্যাট ভাল, আমি মনে করি, আপনি যদি এমন ভাষা চয়ন না করেন যা পুরো স্ট্রিংয়ের সাথে মিলের প্রয়োজন মতো কিছু নির্দিষ্ট বিধিনিষেধ আরোপ করে। এটি কি আপনার উদ্বেগের সমাধান করে?
0

1
পরিষ্কার হওয়ার জন্য: আমি ধরে নিই যে বিভিন্ন ডিলিমিটারগুলির ব্যবহার (যেমন পিএইচপি পিসিআরই দ্বারা অনুমোদিত) অনুমোদিত নয়? (অর্থাত কোন জমা দেওয়ার /^%/এবং %^/%)
পিটার টেলর

উত্তর:


7

একটি সংশোধক সঙ্গে PRCE: 9 টি অক্ষর

/A$/
/.A/A

যদিও এটি ডোরকনব-এর /modifier$/উত্তরে বৈকল্পিক , আমার ধারণা এই উদ্ভাবনটি তার সম্পর্কে মন্তব্য করার চেয়ে আলাদা উত্তর হিসাবে যোগ্যতা অর্জন করেছে: সংশোধক ডাবল-ডিউটি ​​করেন। কেবলমাত্র অন্য রেজেক্সের সাথে মেলে সেখানে থাকার পরিবর্তে এটি অ্যাঙ্কর করে।

আদিতে শেষ হওয়া যেকোন স্ট্রিংয়ের সাথে প্রথম রেজেক্স মেলে AAঅ্যাঙ্গার-টু-স্টার্ট পতাকা ব্যবহার করে দ্বিতীয় রেজেক্স কোনও স্ট্রিংয়ের সাথে মেলে যার দ্বিতীয় অক্ষরটি আক্ষরিক is

অনলাইন ডেমো


3
এটিকে হারাতে কেবল চারটি অ-ডিলিমিটার অক্ষর প্রয়োজন, এবং যেহেতু //যে কোনও কিছুর সাথে মেলে যার অর্থ প্রতিটি রেজেক্সে কমপক্ষে তিনটি নন-ডিলিমিটার চর থাকতে পারে। পিএইচপি পিসিআরই ব্যবহার করে ra৩৩৩৯ নন-স্ব-মিলনকারী রেজিক্সগুলি এই সীমাবদ্ধতার মধ্যে রয়েছে এবং যার জোড়গুলির দৈর্ঘ্য 10 এর চেয়ে কম (৩.7 গাইয়ের চেয়ে ৩২ মাইলের ক্রম অনুসারে) কারণ তাদের বেশিরভাগটি ডিলিমিটর সহ ৫ টি চর রয়েছে turns এই সমাধান এবং অন্য কেউ না। তাই আমি দাবি করি যে এটি সেই নির্দিষ্ট রেজেক্স ইঞ্জিনের জন্য অনুকূল।
পিটার টেলর

18

4 + 6 = 10 এর স্কোর

প্রথম রেজেক্স:

/i$/

দ্বিতীয় রেজেক্স:

/^.i/i

পতাকা অপব্যবহারের জন্য হুর! :-P

প্রথমটি iকোনওটির সাথে মেলে যা শেষ হয় (অতএব, iপতাকাটির সাথে কোনও রেজেক্স )।

দ্বিতীয়টি একটির দ্বিতীয় চরিত্রের সাথে কোনও কিছুর সাথে মেলে i

বিকল্প সংস্করণ: /i$/gএবং /g$/i


3
আরেকটি প্রকরণ হতে পারে /x.$/এবং /^.x/একগুচ্ছ x
shiona

বা /i$/এবং/\/$/i
পিটার টেলর

বা /i$/এবং/i\$/i
পিটার টেলর

6

জাভাস্ক্রিপ্ট রেজিেক্সস, স্কোর: 18

প্রথম রেজেক্স:

/^[^a]+$/

দ্বিতীয় রেজেক্স:

/^[^b]+$/

জাভাস্ক্রিপ্ট পরীক্ষা:

var regex1 = "/^[^a]+$/";
var regex2 = "/^[^b]+$/";
alert(/^[^a]+$/.test(regex2)); // true: regex1 matches regex2
alert(/^[^b]+$/.test(regex1)); // true: regex2 matches regex1
alert(/^[^a]+$/.test(regex1)); // false: regex1 doesn't match regex1
alert(/^[^b]+$/.test(regex2)); // false: regex2 doesn't match regex2

অনলাইন পরীক্ষা: http://jsfiddle.net/99Sx6/



5

4 + 6 = 10

প্রথম রেজেক্স:

/i$/

দ্বিতীয় রেজেক্স:

/\/$/i

i$iদ্বিতীয়টির সাথে শেষ হওয়া কোনওটির সাথে মেলে । প্রথমটির /$সাথে শেষ হওয়া কোনওটির সাথে মেলে /


2
আমি ডুরকনব এর উত্তর পোস্ট করার জন্য একটি মন্তব্য এর ধূপ।
পিটার টেলর

@ পিটারটেলর এখনও অবধি মন্তব্য লক্ষ্য করেনি। এগুলি ছিল স্বাধীন আবিষ্কার।
জাস্টিন

হ্যাঁ, আমি স্বাধীনভাবে শিয়ানার সংস্করণও আবিষ্কার করেছি।
পিটার টেলর

3

5 + 5 = 10

রেজেেক্স # 1:

/0.$/

রেজেক্স # 2:

/^.0/

0উভয় regexes মধ্যে গুলি কোনো অ-metacharacter দিয়ে প্রতিস্থাপিত করা যেতে পারে এবং Regex এখনও কাজ করে।

0.$যার দ্বিতীয় শেষ চরিত্রটি এমন কোনও কিছুর সাথে মেলে 0এবং ^.0যার দ্বিতীয় চরিত্রটি এমন কোনওটির সাথে মেলে 0


2
প্রথম জুটিটি বৈধ রেজিজেস নয়: আপনার এসটি থেকে পালাতে হবে /। বিকল্পটি ডুরকনব এর উত্তর সম্পর্কে করা মন্তব্যের এক দ্বিগুণ।
পিটার টেলর

2

জাভাস্ক্রিপ্ট রেজিেক্সস, স্কোর: 13

প্রথম রেজেক্স:

/\d/

দ্বিতীয় রেজেক্স:

/^[^0]+$/

ব্যাখ্যা: প্রথম রেজেক্সটি একটি ডিজিটযুক্ত সমস্ত কিছুর সাথে মেলে এবং দ্বিতীয় রেজেক্সটি এমন কোনও কিছুর সাথে মিলে না 0

জাভাস্ক্রিপ্ট পরীক্ষা:

var regex1 = "/\d/";
var regex2 = "/^[^0]+$/";
alert(/\d/.test(regex2)); // true: regex1 matches regex2
alert(/^[^0]+$/.test(regex1)); // true: regex2 matches regex1
alert(/\d/.test(regex1)); // false: regex1 doesn't match regex1
alert(/^[^0]+$/.test(regex2)); // false: regex2 doesn't math regex2

অনলাইন পরীক্ষা করুন: http://jsfiddle.net/5VYjC/1/



2

স্কোর: 5 + 5 = 10

খুঁজে বের করতে আমাকে আধ ঘন্টা সময় নিয়েছে তবে আমি যা করেছি তাতে আমি সত্যিই আনন্দিত :)

1 ম হ'ল: /j.$/

দ্বিতীয়ত: /^.j/

1 ম jডান থেকে শুরু করে দ্বিতীয় অবস্থানে ঘটনার সাথে মেলে । jবাম থেকে শুরু করে দ্বিতীয় অবস্থানে দ্বিতীয়টি মিলবে ।

আমি পরীক্ষা করিনি তবে আমি মনে করি যে এই রেজিএক্সগুলি সত্যই বহুমুখী কারণ jকোনও \wচরিত্রের (বা আরও বেশি?) প্রতিস্থাপন করা যেতে পারে এবং এখনও ঠিক কাজ করা উচিত।

PS এটি (আশাবাদী) কোনও ভাষায় কাজ করা উচিত। যদিও এটি যদি কোনও কাজ না করে তবে দয়া করে নীচের মন্তব্যে জানিয়ে দিন :)

পরীক্ষা


এবং আমি এখন বুঝতে পারি যে @ কিউইকুনাক্স ইতিমধ্যে আমার মতো একই সংস্করণ পোস্ট করেছে। আমি সত্যিই দুঃখিত কুইকুনাক্স এবং এটি যদি কোনও সন্তুষ্ট হয় তবে আমি আমার উত্তরটি মুছে ফেলব।
গৌরাঙ্গ ট্যান্ডন

1

পিসিআরআই x: 11 টি অক্ষর ব্যবহার করে

/\s/
/ s.$/x

প্রথমটি কোনও সাদা রঙের অক্ষরের সাথে কোনও স্ট্রিংয়ের সাথে মেলে তবে এতে শ্বেত স্থান নেই। দ্বিতীয়টিতে হোয়াইটস্পেস রয়েছে তবে xপরিবর্তকের কারণে এটি উপেক্ষা করা হয়েছে ; এটি এমন কোনও স্ট্রিংয়ের সাথে মেলে যার পেনাল্টিমেট চরিত্র s

পিসিআরই এবং অন্যান্য ইঞ্জিনগুলি চরিত্রের ক্লাসগুলি ব্যবহার করে: 11 টি অক্ষর

/\w+w/
/\Ww/

প্রথম কোনও শব্দের সাথে একটি "শব্দ" অক্ষর (অক্ষর, অঙ্ক, আন্ডারস্কোর) এর সাথে মিলিত হয় যার পরে আক্ষরিক w; দ্বিতীয়টি কোনও শব্দহীন অক্ষরের সাথে কোনও আক্ষরিক অনুসরণ করে যার পরে আক্ষরিক হয় w

পিসিআরই এবং অন্যান্য ইঞ্জিনগুলি চরিত্রের ক্লাস এবং শব্দের সীমানা অ্যাঙ্কর ব্যবহার করে: 11 টি অক্ষর

/\w\w/
/\bw/

প্রথমটি দুটি ধারাবাহিক "শব্দ" অক্ষরের সাথে কোনও স্ট্রিংয়ের সাথে মেলে; দ্বিতীয় একটি অ-শব্দ অক্ষর দিয়ে কোন স্ট্রিং বা স্ট্রিং এর শুরু একটি আক্ষরিক দ্বারা অনুসরণ w


-1

ECMAScript (11 বাইট):

/^\1?d/
/\d/

অন্যান্য REGEXP ইঞ্জিন (14 বাইট):

/^\\\\1?d/
/\d/

1 ম মিল \ d [..] বা d 1 ডি [..]।

দ্বিতীয়টি কোনও সংখ্যার সাথে কোনও স্ট্রিংয়ের সাথে মেলে।

সম্পাদনা করুন:

মূলত, এই উত্তরটি সমস্ত ইঞ্জিনের সাথে সামঞ্জস্যপূর্ণ হিসাবে পোস্ট করা হয়েছিল তবে এটি ভুল প্রমাণিত হয়েছিল।

ক্যাপচারিং গ্রুপগুলির রেফারেন্সে একটি সমস্যা ছিল (উদাহরণস্বরূপ, পিএইচপি তে)।


অনেকগুলি রেজেক্স ইঞ্জিন আশেপাশের স্ল্যাশ ছাড়াই রেজেক্স নেয়, তবে তাদের গণনা করার জন্য প্রশ্নটি বেশ স্পষ্ট।
পিটার টেলর

আমি উত্তর হিসাবে এটি গণনা করছি না। আমি তার জন্য নোট যোগ করুন।
ইসমাইল মিগুয়েল 23

1
@ পিটারটেলর আমি এই নোটটি যুক্ত করেছি। অ্যাপাচি সংস্করণটি কেবল কারণেই আছে।
ইসমাইল মিগুয়েল

থাকুন: কোন ইঞ্জিনগুলিতে প্রথমটি \1কোনও ব্যাক-রেফারেন্স হিসাবে ব্যাখ্যা না করে পার্স করে ?
পিটার টেলর

আপনি এটি যেভাবে ব্যবহার করছেন তার উপর নির্ভর করে। পিএইচপি-তে, উদাহরণস্বরূপ, আপনি যদি ভিতরে রাখেন তবে আপনার "/^\1?d/"সমস্যা হবে তবে আপনি যদি '/^\1?d/'তা করেন তবে ঠিক আছে। কোডটি ব্যাখ্যা করা হলে উদ্ধৃতিগুলি একটি বিশাল পার্থক্য করে।
ইসমাইল মিগুয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.