"স্টপ" দিয়ে শুরু করে স্ট্রিংয়ের সাথে নিয়মিত প্রকাশ


102

স্ট্রিংয়ের শুরুতে কোনও শব্দের সাথে মেলে আমি কীভাবে একটি নিয়মিত এক্সপ্রেশন তৈরি করব। আমরা stopএকটি স্ট্রিংয়ের শুরুতে মিলতে দেখছি এবং যে কোনও কিছুই এটি অনুসরণ করতে পারে।

উদাহরণস্বরূপ অভিব্যক্তিটি মিলবে:

stop
stop random
stopping

ধন্যবাদ

উত্তর:


191

আপনি যদি স্টপ ব্যবহারের সাথে শুরু করে কেবল লাইনগুলি মেলাতে চান

^stop

আপনি যদি শব্দটি দিয়ে শুরু করে লাইনগুলি মেলাতে চান তবে একটি স্পেসের পরে বন্ধ করুন

^stop\s

অথবা, আপনি যদি স্টপ শব্দের সাথে শুরু করে লাইনগুলি মেলাতে চান তবে একটি স্থান বা অন্য কোনও শব্দ অক্ষর অনুসরণ করে আপনি ব্যবহার করতে পারেন (আপনার রেজেক্স ফ্লেভার অনুমতি দিচ্ছে)

^stop\W

অন্যদিকে, অনুসরণ করা বেশিরভাগ রেজেেক্স স্বাদে স্ট্রিংয়ের শুরুতে একটি শব্দের সাথে মিলে যায় (এই স্বাদগুলিতে \ ডাব্লু এর বিপরীতে মেলে)

^\w

আপনার স্বাদে \ ডাব্লু শর্টকাট না থাকলে আপনি ব্যবহার করতে পারেন

^[a-zA-Z0-9]+

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

শর্টকাটগুলি কী অনুমোদিত এবং কীসের সাথে তারা মিলছে (এবং তারা কীভাবে ইউনিকোডের সাথে ডিল করে know


28
আপনার উত্তরটি সাধারণীকরণের জন্য +1। স্ট্যাক ওভারফ্লোতে আমি এর আরও কিছু দেখতে চাই। এটিকে আমার মতে আরও উন্নততর শিক্ষার সংস্থান করে।
জিম

এটিকে কীভাবে সংবেদনশীল করা যায় না যেমন ম্যাচ বন্ধ বা থামানো বা এসটিপ?
এলটন গার্সিয়া ডি সান্টানা

আপনার ভাষার উপর নির্ভর করে ... পার্ল সামঞ্জস্যপূর্ণ আই মডিফায়ার ব্যবহার করতে পারে। / রেজেক্স / আই। নেট রেজেক্সঅপশনস.আইগনরেসেস এবং আরও কিছু
ভিঙ্কো ভার্সালোভিক

ভুলে যাবেন না ^stop\b, যা লাইনের শেষ সহ কোনও সীমানাকে অনুমতি দেবে
ম্যাড পদার্থবিদ।

81

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

/^stop.*$/

ব্যাখ্যা:

  • / চর্যাটারগুলি নিয়মিত অভিব্যক্তিটি সীমিত করে (যেমন তারা প্রতি সেজে রেগেক্সের অংশ নয়)
  • ^ মানে লাইনের শুরুতে ম্যাচ
  • দ্বারা অনুসরণ * মানে কোন অক্ষর বার যে কোন সংখ্যার সাথে মেলে (।), (*)
  • $ মানে রেখার শেষ পর্যন্ত

যদি আপনি এই স্টপটি একটি সাদা স্থান অনুসরণ করে প্রয়োগ করতে চান তবে আপনি RegEx এর মতো পরিবর্তন করতে পারেন:

/^stop\s+.*$/
  • । গুলি অর্থ হ'ল যে কোনও সাদা স্থান
  • + + নিম্নলিখিত \ গুলি মানে করেছে অন্তত একটি হোয়াইটস্পেস অক্ষর স্টপ শব্দ পরে নিম্নলিখিত করা

দ্রষ্টব্য: এছাড়াও মনে রাখবেন যে উপরের RegEx এর জন্য স্টপ শব্দটি কোনও স্থান অনুসরণ করা উচিত! সুতরাং এটি কেবল এমন একটি লাইনের সাথে মেলে না: থামুন


সমস্ত ভাষাগুলি রেজিক্সগুলি সীমিত করতে ফরওয়ার্ডস্ল্যাশ ব্যবহার করে না।
জ্যাব

4
@ গেট মেগেক্স: আমি স্পষ্টতই কেন ব্যাখ্যাটি যুক্ত করেছি। আপনার ভাষা যদি রেজেক্সটি সীমিত করতে অন্য কিছু ব্যবহার করে তবে / যথাযথ চরিত্রের সাথে প্রতিস্থাপন করুন
মাইক ডাইনস্কু

4
@ মেজ হ্যাঁ, এবং এই ধরনের অপ্রয়োজনীয়তা স্পষ্টতা এবং পারফরম্যান্স উভয়ই বাড়িয়ে তোলে rexegg.com/regex-optimizations.html#anchors
মাররেডচিজ

31

আপনি যদি কোনও শব্দের পরে কিছু মিলাতে চান তবে কেবল লাইনের শুরুতে আপনি এটি ব্যবহার করতে পারেন: \bstop.*\b- শব্দটি রেখার পরে followed

স্ট্রিংয়ের শেষ অবধি শব্দ

অথবা আপনি যদি স্ট্রিংয়ের সাথে শব্দটি মিলাতে চান\bstop[a-zA-Z]* - কেবল স্টপ দিয়ে শুরু হওয়া শব্দ

কেবল স্টপ দিয়ে শুরু হওয়া শব্দ

অথবা ^stop[a-zA-Z]*কেবলমাত্র শব্দের জন্য স্টপ দিয়ে রেখার সূচনা - প্রথম শব্দটি কেবলমাত্র
সম্পূর্ণ রেখা ^stop.*- কেবল স্ট্রিংয়ের প্রথম লাইন line

এবং আপনি যদি নতুন লাইনের ব্যবহার সহ স্টপ দিয়ে শুরু করে প্রতিটি স্ট্রিং মেলাতে চান: /^stop.*/s- স্টপ দিয়ে শুরু হওয়া মাল্টলাইন স্ট্রিং


20

@ শরদহোলানী লাইক দিয়েছেন। এটি " স্টপ " দিয়ে শুরু হওয়া প্রতিটি শব্দের সাথে মেলে না "

। এটি কেবল " থামানো " এর মতো লাইনের শুরুতে থাকলে । @ ওয়াকসো সঠিক উত্তর দিয়েছেন:

এই এক সামান্য , ভাল যদি আপনি কোন শব্দ "দিয়ে শুরু মেলে চান তাহলে স্টপ " এবং থেকে কিছুই কিন্তু চিঠি ধারণকারী A থেকে Z

\bstop[a-zA-Z]*\b

এটি সব মিলবে

বন্ধ (1)

এলোমেলো স্টপ (2)

থামছে (3)

থামাতে চাই (4)

দয়া করে থামুন (5)

কিন্তু

/^stop[a-zA-Z]*/

(3) পর্যন্ত কেবল (1) মিলবে তবে (4) এবং (5)


8
/stop([a-zA-Z])+/

যেকোন স্টপ শব্দের সাথে মেলে (থামানো, থামানো, থামানো ইত্যাদি)

তবে, আপনি যদি কেবল স্ট্রিংয়ের শুরুতে "স্টপ" মেলাতে চান

/^stop/

করবে: ডি


4
এটি "যাওয়া বন্ধ করুন" মিলবে
অ্যালেক্স বি

4
এটি স্টপ 123 বা থামার সাথে মেলে না ,.
ল্যাটিন্ট্রান্সলেশন

7

"থামুন", "থামুন", "থামুন" এবং "থামানো" ব্যবহার সহ "স্টপ" দিয়ে শুরু হওয়া কোনও কিছুর সাথে আপনি যদি মিল করতে চান:

^stop

আপনি যদি "থামি", "থামিয়ে দিন", তবে "থামানো" না এবং "থামানো" ব্যবহার না করে স্টপ শব্দের সাথে কিছু মিলিয়ে দেখতে চান :

^stop\W

0

আমি এই সমস্যাটির জন্য একটি সাধারণ নিয়মিত অভিব্যক্তি পদ্ধতির বিরুদ্ধে পরামর্শ দেব। এখানে অনেকগুলি শব্দের রয়েছে যা অন্য সম্পর্কিত নয় এমন শব্দের সাবস্ট্রিংস এবং আপনি সম্ভবত ইতিমধ্যে সরবরাহ করা সহজ সমাধানগুলিকে আরও বেশি বোঝার চেষ্টা করে নিজেকে ক্রেজি drive

প্রথমে পাঠ্য প্রক্রিয়া করার জন্য আপনি কমপক্ষে একটি নিষ্পাপ স্টেমিং অ্যালগরিদম (পোর্টার স্টেমার চেষ্টা করুন; বেশিরভাগ ভাষায় বিনামূল্যে কোড রয়েছে) চাইবেন want এই প্রক্রিয়াজাত পাঠ্য এবং প্রাক-প্রক্রিয়াজাত পাঠ্যকে দুটি পৃথক স্পেস-স্প্লিট অ্যারে রাখুন। নিশ্চিত হোন যে প্রতিটি অ বর্ণানুক্রমিক অক্ষরও এই অ্যারেটিতে নিজস্ব সূচি পেয়েছে। আপনি যে শব্দের তালিকা ফিল্টার করছেন সেগুলিও স্টেম করুন।

পরবর্তী পদক্ষেপটি হ'ল অ্যারে সূচকগুলি খুঁজে পাওয়া যাবে যা আপনার স্টেমড 'স্টপ' শব্দের তালিকার সাথে মেলে। অপসারণ না করা অ্যারে থেকে এগুলি সরিয়ে ফেলুন এবং তারপরে স্পেসে আবার যোগদান করুন।

এটি কেবল সামান্য জটিল, তবে এটি অনেক বেশি নির্ভরযোগ্য একটি পদ্ধতির। যদি আরও এনএলপি-ভিত্তিক পদ্ধতির মান সম্পর্কে আপনার সন্দেহ থাকে তবে আপনি ক্লাবটিক ভুল সম্পর্কে কিছু গবেষণা করতে চাইতে পারেন ।


0

আপনি যদি শব্দটি "স্টপ" দিয়ে শুরু করতে চান তবে আপনি নিম্নলিখিত প্যাটার্নটি ব্যবহার করতে পারেন। "^ থামুন। *"

এটি কোনও কিছুর পরে স্টপ দিয়ে শুরু হওয়া শব্দের সাথে মিলবে।


4
আপনি কি শুধু ব্যবহার করতে পারবেন না "^stop"?
স্টিফেন রাউচ 4:54

এটা নির্ভর করে. জাভা সিনট্যাক্সের ক্ষেত্রে কথা বলার সময়, আমরা স্ট্রিং অবজেক্টের সাথে রেগেক্স বা সরাসরি ব্যবহারের জন্য ম্যাচ () পদ্ধতি ব্যবহার করতে প্যাটার্ন এবং ম্যাচার অবজেক্টটি ব্যবহার করতে পারি। তারা নীচের হিসাবে ফলাফলের মধ্যে পৃথক: code String line = "stopped"; String pattern = "^stop"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(line); System.out.println(m.find( )); //prints true System.out.println(line.matches(pattern)); //prints false
মনীষা চৌরাসিয়া

4
এই লাইনটির শুরুতে শব্দটি মিলে যায়। "স্টপ" দিয়ে শুরু হওয়া শব্দগুলি যদি লাইনের মাঝখানে বা শেষে থাকে তবে এই রেজেক্সটি মিলবে না। @ স্টেফেনরউচ যদি আপনি [এজেড] বাদ দেন তবে আপনি পুরোপুরি "থামানো" এর মতো কোনও শব্দ পাবেন না। "থামানো" এর ক্ষেত্রে আপনি "স্টপ" পান এবং "পিং" অনুপস্থিত হবে।
সেদাত কিলিঙ্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.