রেজেক্স: কেস সংবেদনশীলতা উপেক্ষা করুন


316

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

G[a-b].*


2
জি [এ-বিএ-বি]। * এই সাধারণ ক্ষেত্রে সুস্পষ্ট হবে, কেস সংবেদনশীলতা আফিক প্ল্যাটফর্ম নির্ভর এবং আপনি প্ল্যাটফর্ম দিচ্ছেন না।
জোছিম ইসাকসন

16
আপনি জাভা ব্যবহার করেন, তাহলে আপনি প্যাটার্ন বর্গ সঙ্গে এই নির্দিষ্ট করতে পারেন: Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
james.garriss

এখানে আরও জাভা অপশন রয়েছে: ব্লগস.ওরকল
এক্সিউমিংসেন

নোট করুন যে grepএটির জন্য এটি হ'ল সংশোধকটির সংযোজন -i। উদা: grep -rni regular_expressionএই 'রেগুলার_এক্সপ্রেশন' 'r'ecursively, কেস জন্য অনুসন্ধান করতে' i'nsensitive, লাইন দেখাচ্ছে 'ফলাফলে n'umbers।
গ্যাব্রিয়েল স্ট্যাপলস

উত্তর:


444

ধরে নিচ্ছেন আপনি পুরো রেজেক্স কেস উপেক্ষা করতে চান , আপনার iপতাকাটি সন্ধান করা উচিত । প্রায় সমস্ত রেজেক্স ইঞ্জিন এটিকে সমর্থন করে:

/G[a-b].*/i

string.match("G[a-b].*", "i")

আপনার ভাষা / প্ল্যাটফর্ম / সরঞ্জামের জন্য ডকুমেন্টেশনটি পরীক্ষা করে দেখুন কীভাবে ম্যাচের মোডগুলি নির্দিষ্ট করা হয়।

আপনি যদি রেজেক্সের কেবলমাত্র অংশটি সংবেদনশীল হতে চান (আমার মূল উত্তর হিসাবে অনুমান করা হয়), তবে আপনার কাছে দুটি বিকল্প রয়েছে:

  1. ব্যবহার করুন (?i)এবং [ঐচ্ছিকরূপে] (?-i)মোড সংশোধনকারীদের:

    (?i)G[a-b](?-i).*
  2. সমস্ত প্রকরণ (যেমন লোয়ারকেস এবং বড় হাতের অক্ষর) রেজেজেসে রাখুন - মোড সংশোধকগুলি সমর্থিত না হলে দরকারী:

    [gG][a-bA-B].*

একটি সর্বশেষ নোট: আপনি যদি এএসসিআইআই ছাড়াও ইউনিকোডের অক্ষরগুলি নিয়ে কাজ করে থাকেন তবে আপনার রেজেক্স ইঞ্জিন সেগুলি যথাযথভাবে সমর্থন করে কিনা তা পরীক্ষা করে দেখুন।


উজ্জ্বল! এর জন্য কাজ করে: পার্ল-পেপের '/ ^ utf-8 \? বি \?। * $ // গি' ক্যান্সার .1631, "ইউটিএফ -8? বি?" স্ট্রিংয়ের সাথে ম্যাচিং / প্রতিস্থাপন? ফাইল ক্যান্সার .1631 এ। এটি ব্যর্থ হয়েছে: পার্ল-পেপ 's / ^ utf-8 \? বি \?। * $ // জি' ক্যান্সার .1631, কেস মিলছে না বলে।
ভিক্টোরিয়া স্টুয়ার্ট

এই পোস্টটি যদি এর থেকে সুনির্দিষ্ট উদাহরণ না হয় তবে আরও স্পষ্ট হবে। আপনি যদি ".txt" এবং ".TXT" এর মতো অন্য শব্দের জন্য কেস উপেক্ষা করতে চান তবে কি পছন্দ করুন। এই উত্তরটি দেখার থেকে আমি এখনও নিশ্চিত না যে আমি কীভাবে এটি করতে পারি।
কাইল ব্রিজেনস্টাইন

কোনও কারণে আপনার পোস্ট করা রেইগেক্স প্রসারিত রিজেক্সে কাজ করে না find.. উদাহরণস্বরূপ find . \( -type d -regextype posix-extended -regex '/./[a-c][^.]*/i' \)কোনও ফোল্ডার দেখায় না .. find . \( -type d -regextype posix-extended -regex './[a-c][^.]*' \)মডিফায়ার ছাড়া সাদা অনুরূপ একটি রেড সঠিক ফোল্ডারগুলি প্রদর্শন করে না। কোন ধারণা কেন?
alpha_989

এখানে আমি [a-c]কেবলমাত্র বর্তমান ফোল্ডারে
বর্ণগুলি

সত্যই আমি উত্তরটির মূল অংশে বিকল্প 2 রেখেছি কারণ এটি জেনেরিক এবং সমস্ত রেইগেক্স ইঞ্জিনগুলির সাথে কাজ করে।
পুটার্ডো বোরাটো

154

বাস্তবায়নের উপর নির্ভর করে তবে আমি ব্যবহার করব

(?i)G[a-b].

বৈচিত্র:

(?i) case-insensitive mode ON    
(?-i) case-insensitive mode OFF

আধুনিক রেজেক্স স্বাদগুলি আপনাকে নিয়মিত অভিব্যক্তির কেবলমাত্র অংশে মডিফায়ার প্রয়োগ করতে দেয়। আপনি যদি রেগেক্সের মাঝখানে সংশোধক (? Im) sertোকান তবে পরিবর্তকটি কেবলমাত্র পরিবর্তকের ডানদিকে রেজেক্সের অংশে প্রযোজ্য। এই স্বাদগুলির সাহায্যে আপনি একটি বিয়োগ চিহ্ন (? -I) দিয়ে তার পূর্ববর্তী পদ্ধতিগুলি বন্ধ করতে পারেন।

বিবরণটি পৃষ্ঠাটি থেকে: https://www.regular-expressions.info/modifiers.html


এটি টার্টোইজএইচজি এর অনুসন্ধান রেজেক্স ইঞ্জিনের সংশোধক বিন্যাস।
mwolfe02

আপনি কী আমাকে লিনাক্স শেল ("-i" স্যুইচটি ব্যবহার না করে egrep এ বলুন) সাধারণভাবে কীভাবে অর্জন করা যায় তা বলতে পারেন?
কৃষ্ণ গুপ্ত

1
কী (?i)করে এবং কীভাবে এটি শেষ করা যায় তা ব্যাখ্যা করা ( (?-i)) সত্যিই সহায়ক হত। আপনার উত্তরে কেন এই উত্তরটি প্রায় 1 টি প্রশ্নের পরিবর্তে প্রায় 1 টি হিসাবে 1/3 টির বেশি ভোট রয়েছে কেননা তারা এই সূক্ষ্ম বিশদটি ব্যাখ্যা করে।
গ্যাব্রিয়েল স্ট্যাপলস

55

সংবেদনশীল কেস উপেক্ষা করে বৈধতার জন্য নিয়মিত অভিব্যক্তি ab

(?i)(abc)

1
অ্যান্ড্রয়েড স্টুডিও লগক্যাট দিয়ে পুরোপুরি কাজ করে
জো


47

iপতাকা স্বাভাবিকভাবে কেস insensitivity জন্য ব্যবহার করা হয়। আপনি এখানে কোনও ভাষা দেন না, তবে এটি সম্ভবত এর মতো /G[ab].*/iবা কিছু হবে /(?i)G[ab].*/


15

কেবলমাত্র সম্পূর্ণতার জন্য আমি ইউনিকোড সহ সি ++ তে নিয়মিত প্রকাশের জন্য সমাধানটি যুক্ত করতে চেয়েছিলাম:

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);

if (std::tr1::regex_match(szString, pattern))
{
...
}

1
কেউ আমাকে স্পষ্ট করে বলতে পারেন কেন এই পোস্টটি নিম্নচালিত হয়েছিল? গৃহীত সমাধানটি নির্দিষ্ট কোড ব্যবহার করে এবং সম্পূর্ণতার জন্য আমি সি ++ ভাষার স্ট্যান্ডার্ড লাইব্রেরির জন্য সমাধানটি যুক্ত করতে চেয়েছিলাম। আমার মতে আমি আরও একটি সাধারণ প্রশ্নের অতিরিক্ত মূল্য তৈরি করেছি।
ফ্রাঙ্কেনস্টাইন

5

আমি যেমন অনুরূপ পোস্টটি থেকে আবিষ্কার করেছি ( এডাব্লুকে উপেক্ষা করুন), পুরানো সংস্করণ (যেমন ভ্যানিলা ম্যাক ওএস এক্স) এর উপরে, আপনাকে ব্যবহারের প্রয়োজন হতে পারে 'tolower($0) ~ /pattern/'

IGNORECASEঅথবা (?i)বা /pattern/iহয় ত্রুটি উত্পন্ন করবে বা প্রতিটি লাইনের জন্য সত্য হবে।


2

সি শার্প

using System.Text.RegularExpressions;
...    
Regex.Match(
    input: "Check This String",
    pattern: "Regex Pattern",
    options: RegexOptions.IgnoreCase)

বিশেষত: বিকল্পগুলি: RegexOptions.IgnoreCase


1

[জিজি] [এএবিবি]। * প্যাটার্নটি খুব জটিল বা দীর্ঘ না হলে সম্ভবত সমাধানটি সহজ করে।


এই উত্তরটি কেন প্রদত্ত প্রশ্নের জন্য ভুল তা জানতে আগ্রহী হবেন?
alpha_989

আপনার উত্তরে এটি আছে "খুব জটিল বা দীর্ঘ নয়"
রেগেইগুইটার

এটি আসলে একমাত্র সমাধান যা আমার মামলার পক্ষে কাজ করেছিল। এছাড়াও এটি দেখতে সর্বাধিক জেনেরিক সমাধানের মতো যা সর্বত্র কাজ করা উচিত। অন্যান্য সমস্ত উত্তর নির্দিষ্ট রেগেক্স বাস্তবায়নের জন্য খুব নির্দিষ্ট বলে মনে হচ্ছে।
পুটার্ডো বোরাটো

1

ইতিমধ্যে গৃহীত উত্তরগুলিতে যোগ করুন:

গ্রেপ ব্যবহার:

নোট করুন যে grepএটির জন্য এটি হ'ল সংশোধকটির সংযোজন -i। উদা: grep -rni regular_expressionএই 'রেগুলার_এক্সপ্রেশন' 'r'ecursively, কেস জন্য অনুসন্ধান করতে' i'nsensitive, লাইন দেখাচ্ছে 'ফলাফলে n'umbers।

এছাড়াও, নিয়মিত প্রকাশগুলি যাচাই করার জন্য এখানে দুর্দান্ত সরঞ্জাম রয়েছে: https://regex101.com/

প্রাক্তন: এই চিত্রটিতে অভিব্যক্তি এবং ব্যাখ্যা দেখুন।

এখানে চিত্র বর্ণনা লিখুন

তথ্যসূত্র:


0

জাভাতে, Regexকনস্ট্রাক্টর আছে

Regex(String pattern, RegexOption option)

সুতরাং মামলা উপেক্ষা করার জন্য, ব্যবহার করুন

option = RegexOption.IGNORE_CASE

0

আপনি অনুসন্ধান / প্রতিস্থাপন ব্যবহার করে ভিজ্যুয়াল স্টুডিও এবং ভিজ্যুয়াল স্টুডিও কোডে রেজেক্স অনুশীলন করতে পারেন।

কেস সহ রেগেক্স এক্সপ্রেশনগুলির জন্য আপনাকে ম্যাচ কেস এবং নিয়মিত এক্সপ্রেশন দুটি চয়ন করতে হবে। অন্য [এজেড] এখানে কাজ করবে না enter

ভিজ্যুয়াল স্টুডিও 2019 সম্প্রদায়


-2

আপনি আপনার প্রাথমিক স্ট্রিংকে নেতৃত্ব করতে পারেন, যা আপনি প্যাটার্ন মিলের জন্য যাচাই করতে যাচ্ছেন, নিম্নের ক্ষেত্রে to এবং আপনার প্যাটার্নে যথাক্রমে লোয়ার কেস প্রতীক ব্যবহার করে।

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