নিয়মিত এক্সপ্রেশন- যেকোনও কিছুর সাথে ম্যাচ করুন


278

আমি একেবারে কোনও কিছুর সাথে মিলিত হওয়ার জন্য কীভাবে একটি অভিব্যক্তি করব (সাদা স্থান সহ)?
উদাহরণ:

রেজেক্স: আমি _____ ভেড়া কিনেছি।

ম্যাচ: আমি ভেড়া কিনেছি। আমি একটা ভেড়া কিনেছি। আমি পাঁচটি ভেড়া কিনেছি।

আমি ব্যবহার করার চেষ্টা করেছি (.*), তবে এটি কাজ করছে বলে মনে হচ্ছে না।

আপডেট: আমি এটি কাজ করেছিলাম, স্পষ্টতই সমস্যাটি নিয়মিত প্রকাশের সাথে ছিল না, কেবল (()) চরিত্রগুলি পালানো হচ্ছে।


27
.*কাজ করা উচিত. আপনি কি আপনার আসল কোডটি পেস্ট করতে পারবেন?
জ্যাকব এগারস

2
আপনি কোন ভাষায় কোড দিচ্ছেন?
জিগি

9
একটি বিন্দু একটি newline মেলে না হবে
জী

উত্তর:


293

সাধারণত ডট নিউলাইনগুলি বাদে কোনও চরিত্রের সাথে মেলে ।

সুতরাং যদি .*কাজ না করা হয় তবে "ডট নিউললাইনগুলিকে খুব মেলে" বিকল্পটি (বা ব্যবহার (?s).*) সেট করুন।

আপনি যদি জাভাস্ক্রিপ্ট ব্যবহার করছেন, যার "ডটল" বিকল্প নেই, চেষ্টা করুন [\s\S]*। এর অর্থ "হোয়াইট স্পেস বা নন-হোয়াইটস্পেসে থাকা এমন কোনও অক্ষরের সাথে মেলে" - কার্যকরভাবে "কোনও স্ট্রিংয়ের সাথে মিল"।

আরেকটি বিকল্প যা কেবল জাভাস্ক্রিপ্টের জন্য কাজ করে (এবং অন্য কোনও রেজেক্স স্বাদ দ্বারা স্বীকৃত নয়) এটি [^]*কোনও স্ট্রিংয়ের সাথেও মেলে। তবে [\s\S]*মনে হয় এটি আরও বহুল ব্যবহৃত হয়েছে, সম্ভবত এটি আরও বহনযোগ্য।


7
.*মেলে না \nতবে এটি একটি স্ট্রিং মেলে যা এটি ধারণ করে \nকারণ এটি 0 টি অক্ষরের সাথে মেলে।
টোটোগুলি

1
জাভাস্ক্রিপ্ট ব্যবহার করে যদি এই প্যাটার্নটিতে কোনও ভেরিয়েবল সেট করার সময় স্ল্যাশ স্ল্যাশ করতে ভুলবেন না যেমন: var প্যাটার্ন = "[\\ s \\ S] *";
অ্যাস্ট্রা বিয়ার

(?s).*আমার জন্য কাজ করে নতুন লাইন সহ সবকিছু মিলেছে
গুজরাত মধ্যে Santana

1
/ [\ S \ S] * / ব্যবহার করে একটি সমস্যা রয়েছে। যদি আপনি এটিকে আপনার কোডটিতে ব্যবহার করেন এবং তারপরে এমন কোডের মন্তব্য করেন যা একটি সিনট্যাক্স ত্রুটির কারণ হয় কারণ প্যাটার্নটির শেষে মন্তব্যটির সমাপ্তি বোঝানো হয়েছে। তারপরে এটিকে কাজ করতে আপনাকে মন্তব্য-আউট কোড থেকে সেই প্যাটার্নটি সরিয়ে ফেলতে হবে। তবে তারপরে যদি আপনি এটি আবার কখনও মন্তব্য করেন তবে এটি আর কাজ করবে না, বা আগের মতো কাজ করবে না এবং করা উচিত।
পানু লজিক

এটি একটি নক্ষত্রের মধ্যে শেষ হওয়া কোনও রেজেক্সের ক্ষেত্রে হবে। অবশ্যই এটি পরে *(যেমন হিসাবে /.*(?:)/) কিছু যোগ করে বা রেজেক্স কনস্ট্রাক্টর ( var foo = new RegExp(".*")) ব্যবহার করে এড়ানো সহজ ।
টিম পিটজ্যাকার

177

(.*?) যে কোনও কিছুর সাথে মেলে - আমি এটি বছরের পর বছর ধরে ব্যবহার করছি।


61
তবে কি এটি একটি নতুন লাইনের সাথে মেলে?
inedaahero

আমি এটি সাব্লাইম পাঠ্যে ব্যবহার করেছি এবং এটি পুরোপুরি কার্যকর হয়েছে। ধন্যবাদ! ("title":".*?")
স্ক্যাব্রালো

8
জাভাস্ক্রিপ্টে, ব্যবহার করুন [\s\S]*বা [^]*
জেফ হুইজসম্যানস

আমি জানি না তবে প্রতিবার আমি এই অভিব্যক্তিটি ব্যবহার করি, আমার ব্যবহারের ক্ষেত্রে সুনির্দিষ্ট অভিব্যক্তি না দেওয়ার জন্য আমি নিজেকে দোষী মনে করি। যদি বলে, w+যথেষ্ট নয়, আমি ব্যবহার শেষ করছি .+। ভাগ্যক্রমে আমাকে কামড়ানোর জন্য এখনও ফিরে আসেনি।
তুষার

আমার জন্য কাজ করে পাইথন ব্যবহার
suffa

89

নীচের 1 টি পছন্দ করুন এবং মুখস্থ করুন !!! :)

[\s\S]*
[\w\W]*
[\d\D]*

ব্যাখ্যা:

\s: হোয়াইটস্পেস: হোয়াইটস্পেস \Sনয়

\w: শব্দ: শব্দ \Wনয়

\d: ডিজিট: ডিজিট \Dনয়

(আপনি বিনিময় করতে পারেন *জন্য +যদি আপনি 1 বা তার বেশি অক্ষরের চান [0 পরিবর্তে বা তার বেশি])।




বোনাস সম্পাদনা:

আপনি যদি একক লাইনে সমস্ত কিছু মেলাতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

[^\n]+

ব্যাখ্যা:

^: না

\n: লাইন বিরতি

+: 1 টির জন্য বা আরও বেশি চরিত্রের জন্য



6

ব্যবহার করুন .*এবং নিশ্চিত করুন যে আপনি নিজের প্রয়োগগুলি 'একক-লাইনের সমতুল্য ব্যবহার করছেন যাতে আপনার লাইন শেষের সাথে মিলবে ।

এখানে একটি দুর্দান্ত ব্যাখ্যা রয়েছে -> http://www.regular-expressions.info/dot.html


4

কারণ .নিউলাইন বা লাইন টার্মিনেটর বাদে একটি একক অক্ষর সন্ধান করুন।

সুতরাং, কোনও কিছুর সাথে মেলে আপনি এই জাতীয় ব্যবহার করতে পারেন: (.|\n)*?

আশা করি এটা সাহায্য করবে!


2

(.*?)আমার জন্য কাজ করে না। আমি ঘিরে থাকা মন্তব্যের সাথে মিল দেওয়ার চেষ্টা করছি /* */, যাতে একাধিক লাইন থাকতে পারে।

এটা চেষ্টা কর:

([a]|[^a])

এই regex মেলে aবা anything else expect a। অবশ্যই, এর অর্থ সমস্ত কিছুর মিল matching

বিটিডব্লিউ, আমার পরিস্থিতিতে /\*([a]|[^a])*/সি স্টাইলের মন্তব্যের সাথে মেলে।

আরও সংক্ষিপ্ত পথের জন্য @ এমপেনকে ধন্যবাদ।

[\s\S]

1
জেএসে এটি করার সর্বাধিক সাধারণ উপায় হ'ল [\s\S]- অর্থাত্ ম্যাচ স্পেস এবং অ-স্পেস।
এমপেন

2

জাভাস্ক্রিপ্টের জন্য সবচেয়ে ভাল এবং সরল উত্তরটি মনে হচ্ছে / / 2018 /।

অন্যদের পরামর্শ অনুসারে /(.*?)/ পাশাপাশি কাজ করবে তবে /.*/ আরও সহজ। () প্যাটার্নটির অভ্যন্তরের প্রয়োজন নেই, যতদূর আমি দেখতে পাচ্ছি বা শেষ হবে? একেবারে কোনও কিছুর সাথে মিলিয়ে (খালি স্ট্রিং সহ)

অ-সমাধান:

/ [\ s \ S] / খালি স্ট্রিংয়ের সাথে মেলে না তাই এটি সমাধান নয়।

/ [\ s \ S] * / খালি স্ট্রিংয়ের সাথে মেলে। তবে এতে একটি সমস্যা রয়েছে: আপনি যদি নিজের কোডটিতে এটি ব্যবহার করেন তবে আপনি এই জাতীয় কোডটি মন্তব্য করতে পারবেন না কারণ '* /' -কে মন্তব্য-শেষ-মন্তব্য হিসাবে ব্যাখ্যা করা হয়।

/ ([\ s \ S] *) / কাজ করে এবং মন্তব্য-সমস্যা নেই। তবে এটি বুঝতে দীর্ঘ / দীর্ঘতর এবং আরও জটিল /।


BTW। দেখে মনে হচ্ছে উপরের কোড-উত্সগুলি স্ট্যাক ওভারফ্লো ইটালিকসে আমার উত্তরের অংশগুলি সরবরাহ করে, এটি আমার উদ্দেশ্য ছিল না।
পানু লজিক

1

আপনি যদি জাভাস্ক্রিপ্ট ব্যবহার করছেন, ES2018 গুলি যুক্ত (গুলি) সমস্ত পতাকা। সঙ্গে sপতাকা, ডট .কোন অক্ষর নতুন লাইন অন্তর্ভুক্ত ম্যাচ হবে।

console.log("line_1\nline_2".match(/.+/s))

দ্রষ্টব্য : এটি এখনও কয়েকটি ব্রাউজারে সমর্থিত নয়।


1

2018 স্পেসিফিকেশনটি s এর পতাকা সরবরাহ করে (ওরফে: ডটআল), যাতে .লাইন ব্রেকগুলি সহ যে কোনও চরিত্রের সাথে মেলে:

const regExAll = /.*/s; //notice the 's'

let str = `
Everything
	in 	this
			string
					will
						be
	matched. Including whitespace (even Linebreaks).
`;

console.log(`Match:`, regExAll.test(str)); //true
console.log(`Index Location:`, str.search(regExAll));

let newStr = str.replace(regExAll,"🐔");
console.log(`Replaced with:`,newStr); //Index: 0

উপরের কোডটি ক্রোমে কাজ করে তবে sপতাকাটি ফায়ারফক্সে এখনও প্রয়োগ করা হয়নি তবে তা শীঘ্রই হবে



0

আমি ব্যবহারের পরামর্শ দিচ্ছি /(?=.*...)/g

উদাহরণ

const text1 = 'I am using regex';
/(?=.*regex)/g.test(text1) // true

const text2 = 'regex is awesome';
/(?=.*regex)/g.test(text2) // true

const text3 = 'regex is util';
/(?=.*util)(?=.*regex)/g.test(text3) // true

const text4 = 'util is necessary';
/(?=.*util)(?=.*regex)/g.test(text4) // false because need regex in text

পরীক্ষা করতে regex101 ব্যবহার করুন


0

সত্যই উত্তরগুলি পুরানো তাই আমি দেখতে পেয়েছি যে "/.* / i" এর সাথে অক্ষরের বিষয়বস্তু নির্বিশেষে যদি আপনি কেবল কোনও স্ট্রিং পরীক্ষা করেন তবে যথেষ্ট পরিমাণে সমস্ত কিছু পাওয়া যাবে।

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