যে কোনও চরিত্রের সাথে 10 বারের বেশি বার বার মিলার নিয়মিত প্রকাশ


112

10 বা তার বেশি বার পুনরাবৃত্তি হওয়া একই চরিত্রটির সাথে মেলে আমি একটি সাধারণ নিয়মিত অভিব্যক্তি খুঁজছি। সুতরাং উদাহরণস্বরূপ, আমার কাছে যদি একটি ডকুমেন্ট আনুভূমিক রেখাগুলি দ্বারা লিখিত থাকে:

=================================================

এটি =অক্ষরের লাইনের সাথে মিলবে কারণ এটি 10 ​​বারের বেশি পুনরাবৃত্তি হয়েছে। নোট করুন যে আমি এটি কোনও চরিত্রের জন্য কাজ করতে চাই ।


4
এই অ্যাসনওয়ারের শিরোনাম বিভ্রান্তিমূলক, আপনার উচিত ছিল 'যে কোনও চরিত্রের সাথে 10 বারের বেশি বার পুনরাবৃত্তি করতে নিয়মিত অভিব্যক্তি'
ডালোলিওগ্যাম

উত্তর:


164

আপনার দরকার রেজিেক্সটি /(.)\1{9,}/

পরীক্ষা:

#!perl
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;

এখানে \1বলা হয় একটি backreferences। এটি .বন্ধনীগুলির মধ্যে বিন্দু দ্বারা কী কী ধরা পড়ে তা উল্লেখ করে (.)এবং তারপরে {9,}অনুরূপ নয় বা তার বেশি চরিত্রের জন্য জিজ্ঞাসা করে। সুতরাং এটি কোনও একক চরিত্রের দশ বা ততোধিকের সাথে মেলে।

যদিও উপরের পরীক্ষার স্ক্রিপ্ট পার্লে রয়েছে, এটি খুব স্ট্যান্ডার্ড রেজেক্স সিনট্যাক্স এবং কোনও ভাষায় কাজ করা উচিত। কিছু ভেরিয়েন্টে আপনাকে আরও ব্যাকস্ল্যাশ ব্যবহার করতে হবে, যেমন ইমাস আপনাকে \(.\)\1\{9,\}এখানে লিখতে বাধ্য করবে ।

যদি একটি সম্পূর্ণ স্ট্রিং 9 বা ততোধিক অভিন্ন অক্ষর সমন্বিত থাকে তবে প্যাটার্নটির চারপাশে অ্যাঙ্কর যুক্ত করুন:

my $regex = qr/^(.)\1{9,}$/;

29

পাইথনে আপনি ব্যবহার করতে পারেন (.)\1{9,}

  • (।) একটি চর থেকে গ্রুপ তৈরি করে (যে কোনও চর)
  • 1st 1 {9, 1st প্রথম গ্রুপের নয় বা ততোধিক অক্ষরের সাথে মেলে

উদাহরণ:

txt = """1. aaaaaaaaaaaaaaa
2. bb
3. cccccccccccccccccccc
4. dd
5. eeeeeeeeeeee"""
rx = re.compile(r'(.)\1{9,}')
lines = txt.split('\n')
for line in lines:
    rxx = rx.search(line)
    if rxx:
        print line

আউটপুট:

1. aaaaaaaaaaaaaaa
3. cccccccccccccccccccc
5. eeeeeeeeeeee

যদি পুনরায় অনুসন্ধান (লাইন): প্রিন্ট লাইন (আরএক্সএক্স ভেরিয়েবলের জন্য অনুগ্রহকারী প্রয়োজন হয় না)
ডালোলিওম

4
আপনি এই সাধারণ প্রসঙ্গে সঠিক। ভেরিয়েবল আরএক্সএক্স ব্যবহার করে আমি rxx.group (1), rxx.start (1) ইত্যাদি এর মতো কিছু করতে পারি
Michał Niklas

5

.যে কোনও চরিত্রের সাথে মেলে। ইতিমধ্যে উল্লিখিত কোঁকড়া ধনুর্বন্ধনী সঙ্গে একযোগে ব্যবহৃত:

$: cat > test
========
============================
oo
ooooooooooooooooooooooo


$: grep -E '(.)\1{10}' test
============================
ooooooooooooooooooooooo

হাই জিক এবং @ সাইলেন্টগোস্ট দুই কমান্ড grep -E '([=o])\1{10}' testএবং grep -E '([=o]){10}' testকাজ আপনার উদাহরণ জরিমানা (অভাব নোট \1দ্বিতীয় কমান্ডে)। তবে কমান্ডের সাথে grep -E '([=o])\1{10}' <<< '==o==o==o==o==o==o===o==o==='মিলছে না লাইনের! তবে ছাড়া কমান্ড \1ম্যাচ লাইন: grep -E '([=o]){10}' <<< '==o==o==o==o==o==o===o==o==='। আপনি দয়া করে ব্যাখ্যা করতে পারেন? চিয়ার্স;)
ওলিব্রে

3

কিছু অ্যাপ্লিকেশানগুলিতে এটিকে কাজ করতে আপনার স্ল্যাশগুলি সরিয়ে ফেলতে হবে।

/(.)\1{9,}/

অথবা এটা:

(.)\1{9,}

1

{10,} অপারেটরটি ব্যবহার করুন:

$: cat > testre
============================
==
==============

$: grep -E '={10,}' testre
============================
==============

1

আপনি শব্দ বা চরিত্রের reptitions দ্রুত প্রতিস্থাপন করতে পাওয়ারশেল ব্যবহার করতে পারেন । পাওয়ারশেল উইন্ডোজের জন্য। বর্তমান সংস্করণ 3.0

$oldfile = "$env:windir\WindowsUpdate.log"

$newfile = "$env:temp\newfile.txt"
$text = (Get-Content -Path $oldfile -ReadCount 0) -join "`n"

$text -replace '/(.)\1{9,}/', ' ' | Set-Content -Path $newfile

1

পিএইচপি এর preg_replaceউদাহরণ:

$str = "motttherbb fffaaattther";
$str = preg_replace("/([a-z])\\1/", "", $str);
echo $str;

এখানে [a-z]চরিত্রটিকে হিট করে, ()তারপরে এটিকে \\1ব্যাক-রেফারেন্সের সাথে ব্যবহার করার অনুমতি দেয় যা অন্য একই চরিত্রের সাথে মেলে ধরার চেষ্টা করে (নোট করুন এটি ইতিমধ্যে টানা ২ টি অক্ষরকে লক্ষ্য করছে), এভাবে:

মা বাবা

যদি তুমি কর:

$str = preg_replace("/([a-z])\\1{2}/", "", $str);

এটি পরপর 3 বার বার করা অক্ষর মুছে ফেলবে, আউটপুটিং:

তাকে moherbb


0
={10,}

=10 বা ততোধিক বার পুনরাবৃত্তি করা মিলগুলি ।


4
নিশ্চিত যে এটি 10 ​​বা ততোধিক স্বতন্ত্র চরিত্র গ্রহণ করবে না?
এটান

perl -e 'print "NO" if "abcdefghijklmno" =~ /.{10,}/;'

এটা ভুল ছিল, কিন্তু এটা সম্পাদনা করা হয়েছে (আমার উত্তর যা কিছু downvotes, ভাল পেয়েছিলাম মেলে)
dalloliogm

4
জিৎ, আমি জানতাম না আমাকে স্পষ্ট করে বলতে হয়েছিল যে আপনি যে কিছু চান তার সাথে চরিত্রটি প্রতিস্থাপন করতে পারেন।
সাইলেন্টগোস্ট

0

কিছুটা বেশি জেনেরিক পাওয়ারশেলের উদাহরণ। পাওয়ারশেল In-তে, ম্যাচটি শেষ স্থান সহ হাইলাইট করা হয় (আপনি স্ট্যাকটিতে হাইলাইট করতে পারেন?)

'a b c d e f ' | select-string '([a-f] ){6,}'

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