সমস্ত অ অ্যালফা সংখ্যাসূচক অক্ষর, নতুন লাইন এবং একাধিক হোয়াইট স্পেসকে একটি স্পেস দিয়ে প্রতিস্থাপন করুন


136

আমি প্রতিস্থাপনের জন্য একটি ঝরঝরে RegEx সমাধান খুঁজছি

  • সমস্ত অ আলফা-সংখ্যাসূচক অক্ষর
  • সমস্ত নিউলাইন
  • সাদা স্থানের সমস্ত একাধিক দৃষ্টান্ত

একটি একক স্থান সঙ্গে


ঘরে বসে যারা খেলছেন তাদের জন্য ( নিম্নলিখিতটি কাজ করে )

text.replace(/[^a-z0-9]/gmi, " ").replace(/\s+/g, " ");

আমার চিন্তাভাবনাটি হ'ল রেজিএক্স সম্ভবত এক বিবৃতিতে এটি অর্জনের পক্ষে যথেষ্ট শক্তিশালী। আইডিটি যে উপাদানগুলির প্রয়োজন বলে আমি মনে করি সেগুলি

  • [^a-z0-9] - অ আলফা-সংখ্যাসূচক অক্ষর মুছে ফেলতে
  • \s+ - স্পেসের যেকোন সংগ্রহের সাথে মেলে
  • \r?\n|\r - সমস্ত নতুন লাইন মেলে
  • /gmi - গ্লোবাল, মাল্টি-লাইন, কেস সংবেদনশীল

যাইহোক, আমি সঠিক পদ্ধতিতে রেজেক্সকে স্টাইল করতে পারি না ( নিম্নলিখিতটি কাজ করে না )

text.replace(/[^a-z0-9]|\s+|\r?\n|\r/gmi, " ");


ইনপুট

234&^%,Me,2 2013 1080p x264 5 1 BluRay
S01(*&asd 05
S1E5
1x05
1x5


পছন্দসই আউটপুট

234 Me 2 2013 1080p x264 5 1 BluRay S01 asd 05 S1E5 1x05 1x5

আপনার চেষ্টাটি ঠিক কীভাবে কাজ করে না? কি ভুল হয়?
পয়েন্টটি

উত্তর:


235

সচেতন থাকুন, যা \W আন্ডারস্কোর ছেড়ে দেয় । একটি সংক্ষিপ্ত সমতুল্য [^a-zA-Z0-9]হবে[\W_]

text.replace(/[\W_]+/g," ");

\Wশব্দের অক্ষরের জন্য শর্টহ্যান্ডের অবহেলা (আন্ডারস্কোর সহ)\w[A-Za-z0-9_]

Regex101.com এ উদাহরণ


এটি পরীক্ষা করে দেখুন এবং এটি পরীক্ষা করুন, জেএস-রেজেক্সে এখনও খুব বেশি অভিজ্ঞতা অর্জন করবেন না: পি আপনাকে খুশি খুশি
জনি 5

6
নোট যে \Wঅক্ষর অক্ষর হিসাবে ল্যাটিন-অক্ষরগুলিও স্বীকৃত করবে।
টাইব্লিটজ

1
আমি এই উত্তরটি এত বছর পরেও সঠিক হিসাবে চিহ্নিত করেছি, কারণ আমি পিছনে ফিরে তাকিয়েছি এবং
গৃহীতদের

143

জনি 5 আমাকে এটি মারল। আমি ব্যবহার সুপারিশ যাচ্ছিলেন \W+ছাড়া \sহিসেবে text.replace(/\W+/g, " ")। এটি সাদা স্থানও কভার করে।


এটি নির্দেশ করার জন্য @ টি-ক্যাটসানকে ধন্যবাদ! এটি উত্সাহিত, এবং সরুমান, আপনি যাই হোক না কেন :-) এর সেরা উত্তরটি পরিবর্তন করতে পারেন তবে এটি হওয়া উচিত \W+, [W+]ভাল নয় , শুভ নববর্ষ!
জনি 5

ধন্যবাদ, @ জনি 5! আপনার প্রস্তাবিত পরিবর্তনটি আমি করেছি। আমি আগে বন্ধনী দিয়ে পরীক্ষা করেছিলাম এবং এখন দেখি এটি ছাড়া এটি কাজ করে। তোমাকেও শুভ নববর্ষ.
টি-ক্যাটসান

1
আরে @ টি-ক্যাটসান কি ব্যতিক্রম যুক্ত করার উপায় আছে? আমি অক্ষর রাখতে চাই &এবং -। কোন টিপস?
রেনাটো গামা

1
আমি এটিকে _ এড়াতে নিম্নলিখিত পরিবর্তনটি (/ \ ডাব্লু +) | (_) / জি করেছি। তবে কেবল ভাবছেন যে কেন এটি প্রথম মডেলটিতে উপেক্ষা করা হচ্ছে না এবং আমার রেইজেক্সটি হ'ল দক্ষ।
শ্রীধর গুডিমেলা


6

ভাল আমি মনে করি আপনার প্রতিটি প্যাটার্নে একটি কোয়ান্টিফায়ার যুক্ত করা দরকার। এছাড়াও গাড়িবহর-ফেরার জিনিসটি কিছুটা মজার:

text.replace(/[^a-z0-9]+|\s+/gmi, " ");

সম্পাদনা\s জিনিস ম্যাচ \rএবং \nখুব।


হ্যাঁ সেখানে কিছু টম ফ্যুলারি ছিল এই বিষয়ের উপর অন্যান্য উত্তরগুলি থেকে সংগ্রহ করা, তবে এটি দুর্দান্ত ধন্যবাদ!
জেনারাল

2

এ-তে একটি ভিন্ন পোস্ট দেখেছিল যার ডায়াক্রিটিকাল চিহ্ন ছিল, যা দুর্দান্ত

s.replace(/[^a-zA-Z0-9À-ž\s]/g, "")


2

এটি আমার একটি পুরানো পোস্ট, গৃহীত উত্তরগুলি বেশিরভাগ অংশের জন্য ভাল। তবে আমি প্রতিটি সমাধান এবং অন্য একটি সুস্পষ্ট একটিকে বেনমার্ক করার সিদ্ধান্ত নিয়েছি (কেবল মজাদার জন্য)। আমি ভাবলাম যে বিভিন্ন ব্রাউজারে বিভিন্ন আকারের স্ট্রিং সহ রেজেক্স প্যাটার্নের মধ্যে কোনও পার্থক্য রয়েছে কিনা।

সুতরাং মূলত আমি jscreen অন ব্যবহার করেছি

  • ক্রোম 65.0.3325 / উইন্ডোজ 10 0.0.0 এ পরীক্ষা করা হচ্ছে
  • প্রান্তে 16.16299.0 / উইন্ডোজ 10 0.0.0 এ পরীক্ষা করা হচ্ছে

আমি পরীক্ষিত রেজেক্স প্যাটার্নগুলি ছিল

  • /[\W_]+/g
  • /[^a-z0-9]+/gi
  • /[^a-zA-Z0-9]+/g

আমি এলোমেলো অক্ষরের একটি স্ট্রিং দৈর্ঘ্য সহ এগুলি লোড করেছি

  • দৈর্ঘ্য 5000
  • দৈর্ঘ্য 1000
  • দৈর্ঘ্য 200

আমি ব্যবহৃত জাভাস্ক্রিপ্ট উদাহরণ var newstr = str.replace(/[\W_]+/g," ");

প্রতিটি রান প্রতিটি রেজেজেসে 50 বা ততোধিক নমুনা নিয়ে গঠিত এবং আমি প্রতিটি ব্রাউজারে 5 বার চালাতাম।

আমাদের ঘোড়াগুলিকে রেস করতে দেয়!

ফলাফল

                                Chrome                  Edge
Chars   Pattern                 Ops/Sec     Deviation   Op/Sec      Deviation
------------------------------------------------------------------------
5,000   /[\W_]+/g                19,977.80  1.09         10,820.40  1.32
5,000   /[^a-z0-9]+/gi           19,901.60  1.49         10,902.00  1.20
5,000   /[^a-zA-Z0-9]+/g         19,559.40  1.96         10,916.80  1.13
------------------------------------------------------------------------
1,000   /[\W_]+/g                96,239.00  1.65         52,358.80  1.41
1,000   /[^a-z0-9]+/gi           97,584.40  1.18         52,105.00  1.60
1,000   /[^a-zA-Z0-9]+/g         96,965.80  1.10         51,864.60  1.76
------------------------------------------------------------------------
  200   /[\W_]+/g               480,318.60  1.70        261,030.40  1.80
  200   /[^a-z0-9]+/gi          476,177.80  2.01        261,751.60  1.96
  200   /[^a-zA-Z0-9]+/g        486,423.00  0.80        258,774.20  2.15

সত্য জানা যাবে, উভয় ব্রাউজারে রেইগেক্স (বিচ্যুতি বিবেচনায় নেওয়া) প্রায় পৃথক পৃথক ছিল, তবে আমি মনে করি এটি যদি আরও বেশি বার চালায় তবে ফলাফলগুলি আরও স্পষ্ট হয়ে উঠবে (তবে খুব বেশি নয়)।

1 টি চরিত্রের জন্য তাত্ত্বিক স্কেলিং

                            Chrome                        Edge
Chars   Pattern             Ops/Sec     Scaled            Op/Sec    Scaled
------------------------------------------------------------------------
5,000   /[\W_]+/g            19,977.80  99,889,000       10,820.40  54,102,000
5,000   /[^a-z0-9]+/gi       19,901.60  99,508,000       10,902.00  54,510,000
5,000   /[^a-zA-Z0-9]+/g     19,559.40  97,797,000       10,916.80  54,584,000
------------------------------------------------------------------------

1,000   /[\W_]+/g            96,239.00  96,239,000       52,358.80  52,358,800
1,000   /[^a-z0-9]+/gi       97,584.40  97,584,400       52,105.00  52,105,000
1,000   /[^a-zA-Z0-9]+/g     96,965.80  96,965,800       51,864.60  51,864,600
------------------------------------------------------------------------

  200   /[\W_]+/g           480,318.60  96,063,720      261,030.40  52,206,080
  200   /[^a-z0-9]+/gi      476,177.80  95,235,560      261,751.60  52,350,320
  200   /[^a-zA-Z0-9]+/g    486,423.00  97,284,600      258,774.20  51,754,840

আমি এই ফলাফলগুলিতে খুব একটা গ্রহণ করব না কারণ এটি সত্যই কোনও তাত্পর্যপূর্ণ পার্থক্য নয়, আমরা সত্যিই বলতে পারি প্রান্তটি ধীর: ও। অতিরিক্ত যে আমি সুপার উদাস ছিল।

যাইহোক আপনি নিজের জন্য মানদণ্ড চালাতে পারেন।

এখানে জস্পারফ বেঞ্চমার্ক


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