একটি লাইনের শব্দের মধ্যে একাধিক জায়গার উপস্থিতিগুলি কীভাবে অনুসন্ধান করা যায়


109

একটি লাইনের শব্দের মধ্যে একাধিক জায়গার উপস্থিতিগুলি কীভাবে অনুসন্ধান করা যায়

1. this is a line containing  2 spaces
2. this is a line containing   3 spaces
3. this is a line containing multiple spaces first  second   three   four

উপরোক্ত সমস্তগুলি এই রেজেক্সের জন্য বৈধ ম্যাচ। আমার কোন রেজেক্স ব্যবহার করা উচিত?


আপনি কি সেই লাইনের একটানা ফাঁকা ফাঁকা জায়গা বা সমস্ত ফাঁকা স্থান যাচাই করার চেষ্টা করছেন?
শচীন শনভাগ

একটানা ফাঁকা ফাঁকা স্থান সমস্ত স্থান নয়
স্যাম

1
"শব্দের মধ্যে" বলতে কী বোঝ? আপনার দুটি উদাহরণে একটি শব্দ এবং একটি সংখ্যার মধ্যে একাধিক স্পেস রয়েছে। বিরামচিহ্ন সম্পর্কে কী (উদাহরণস্বরূপ, আপনি কোনও বিন্দুর পরে এবং পরবর্তী শব্দের আগে একাধিক স্পেসের সাথে মিল রাখতে চান)? একটি লাইনের শেষ চরিত্রের আগে / পরে ফাঁকা স্থানগুলি সম্পর্কে কী? আপনি কি ট্যাবগুলিও মেলাতে চান? হোয়াইটস্পেস ব্যতীত আর কিছুই নয় এমন লাইনের কী হবে?
টিম পিটজ্যাকার

"সমন্বিত এবং 2", "ধারণকারী এবং 3", "প্রথম এবং দ্বিতীয়", "দ্বিতীয় এবং তিন" এর মধ্যে ফাঁকা স্থান ... হ্যাঁ, আমি কোনও বিন্দুর পরে এবং পরবর্তী শব্দের আগে স্পেসগুলি মেলাতে চাই।
স্যাম

উত্তর:


180
[ ]{2,}

স্পেস (২ বা আরও বেশি)

আপনি যে শূন্যস্থানগুলির শব্দগুলি অনুসরণ করেন তার আগে এবং পরে এটিও পরীক্ষা করে দেখতে পারেন। (অন্যান্য সাদা স্থান যেমন ট্যাব বা নতুন লাইনের নয়)

\w[ ]{2,}\w

একই, তবে আপনি প্রতিস্থাপনের মতো কাজের জন্য কেবল ফাঁকা স্থানগুলি (ক্যাপচার) চয়ন করতে পারেন

\w([ ]{2,})\w

বা স্পেসের আগে এবং পরে কিছু আছে তা দেখুন, কেবলমাত্র শব্দের অক্ষর নয় (শ্বেতস্থান ছাড়া)

[^\s]([ ]{2,})[^\s]

1
\wএর অর্থ 'শব্দের অক্ষর', অর্থাত্ আলফানিউমেরিক এবং আন্ডারস্কোর, তবে অন্যান্য অ-স্থানের অক্ষর নয়। অ-সাদা স্থানের জন্য পরীক্ষা করতে, \S(মূলধন এস) ব্যবহার করুন । এছাড়াও, প্রথমটি কেবলমাত্র এমন লাইনগুলিকেই মেলে যা দুটি বা ততোধিক স্পেস থাকে এবং অন্য কিছুই নয়।
tdammers

আমি প্রশ্নটি বিকশিত করার চেষ্টা করেছি। আমি বুঝতে পেরেছিলাম যে আপনি যা বলেছেন তা আমি মিস করেছি \S, আমি কেবল এই জাতীয় কার্যকারিতার জন্য চরিত্রের ক্ষেত্রে নির্ভর করতে পছন্দ করি না, এটি পড়া সহজ।
আলেকজান্ডার

1
আপনি কেন একেবারে নোঙ্গর ব্যবহার করছেন? তিনি লাইনগুলিতে কোথাও এমবেড থাকা স্থানগুলি সন্ধান করছেন।
টিম পিটজ্যাকার

কোন বিশেষ কারণ। প্রথমে আমি ভেবেছিলাম আমার তাদের প্রয়োজন, তাই আমি প্রক্রিয়াটি সহ তাদের সবাইকে টেনে আনলাম। আসলে, আপনি ঠিক বলেছেন যে এই ক্ষেত্রে এগুলি ব্যবহার করার জন্য আমি ভুল। আমি এখনই আমার উত্তর সম্পাদনা করব।
আলেকজান্ডার

1
\w[ ]{2,}\wমেলে ব্যর্থ হবে word.<2 spaces>more wordsবা একটি স্ট্রিং যা পুরোপুরি শূন্যস্থান নিয়ে গঠিত। [^\s]([ ]{2,})[^\s]\wফাঁকা জায়গা বা স্ট্রিংগুলির সাথে শুরু হওয়া লাইনে ব্যর্থ হবে bla<2 spaces>....
টিম পাইটজেকার

12

সহজ সমাধান:

/\s{2,}/

এটি এক বা একাধিক সাদা স্থানের অক্ষরের সমস্ত উপস্থিতির সাথে মেলে। আপনার যদি পুরো লাইনটি মেলানোর প্রয়োজন হয় তবে কেবলমাত্র এতে যদি দুটি বা ততোধিক সাদা অংশের অক্ষর থাকে:

/^.*\s{2,}.*$/

যদি সাদা জায়গাগুলি একটানা হওয়ার দরকার না থাকে:

/^(.*\s.*){2,}$/

এটি .*সাধারণত লোভী, যার অর্থ এটি পরীক্ষিত স্ট্রিংয়ের শেষে পৌঁছে যাবে এবং এরপরে যা বাধ্যতামূলক অক্ষর রয়েছে তা মিলবে না। এই ক্ষেত্রে সাধারণত এটি যোগ করা একটি ভাল অনুশীলন এর ?এই মত .*?। পিএইচপি-র পিসিআরই
আলেকজান্ডার

এটি মিলছে। "লোভী" এর অর্থ এটি পুরোপুরি প্যাটার্নটির সাথে মিল রেখে যতটা সম্ভব মেলে। /^.*b.*$/বাস্তবে মেলে না "foobar", যদিও আপনি .*ইতিমধ্যে সম্পূর্ণ স্ট্রিংটির সাথে প্রথম লোভী মিলার প্রত্যাশা করেছিলেন ।
tdammers

9

এই রেজেক্স সমস্ত স্থান নির্বাচন করে, আপনি এটি ব্যবহার করতে এবং এটি একটি একক স্থান দিয়ে প্রতিস্থাপন করতে পারেন

\s+

অজগর উদাহরণ

result = re.sub('\s+',' ', data))

4

জন্য অনুসন্ধান করুন [ ]{2,}। এটি লাইনের মধ্যে যে কোনও জায়গায় দুটি বা আরও সংলগ্ন স্পেসগুলি সন্ধান করবে। এটি শীর্ষস্থানীয় এবং পিছনের স্থানগুলির পাশাপাশি পুরো স্পেসের সমন্বিত লাইনের সাথেও মিলবে। আপনি যদি এটি না চান তবে আলেকজান্ডারের উত্তরটি দেখুন।

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

সমস্যাটি \s{2,}হ'ল এটি উইন্ডোজ ফাইলগুলিতেও নতুন লাইনের সাথে মিলবে (যেখানে নিউলাইনগুলি দ্বারা চিহ্নিত করা হয় CRLFবা \r\nযা মিলছে \s{2}

আপনি যদি একাধিক ট্যাব এবং স্পেস সন্ধান করতে চান তবে ব্যবহার করুন [ \t]{2,}


more than one space between words in a line[ ]{2,}শব্দের মধ্যে কেমন আছে ? এমনকি আপনি প্রশ্নটি পড়েছেন?
আলেকজান্ডার

যে কারণেই ওপি সত্যিই তার লেখার মতো কঠোর হতে চাইলে আমি আপনার উত্তরটি উল্লেখ করেছি। আমাদের তাকে জিজ্ঞাসা করা উচিত।
টিম পিটজ্যাকার

2

এখানে আমার সমাধান

[^0-9A-Z,\n]

এটি সমস্ত অঙ্ক, কমা এবং নতুন লাইন সরিয়ে ফেলবে তবে মধ্যবর্তী স্থান যেমন ডেটা সেট হিসাবে নির্বাচন করবে

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