যা আবদ্ধ আছে তা ক্যাপচার না করে আমি কী একটি রেজেজেমে ব্যবহার করতে পারি?


115

আমি আমার রেজেক্স তৈরি করতে রুবুলার ডট কম ব্যবহার করছি এবং তাদের ডকুমেন্টেশনগুলি নিম্নলিখিতটি বর্ণনা করে:

(...)   Capture everything enclosed
(a|b)   a or b

এতে কী আছে তা ক্যাপচার না করে আমি কীভাবে একটি ওআর এক্সপ্রেশন ব্যবহার করতে পারি? উদাহরণস্বরূপ, বলুন আমি "এসি" বা "বিসি" কে ক্যাপচার করতে চাই। আমি রেজেক্স ব্যবহার করতে পারি না

(a|b)(c)

ঠিক আছে? সেই থেকে আমি একটি গ্রুপে "এ" বা "বি" এবং অন্যটিতে "সি" ক্যাপচার করি, একই নয়। আমি জানি আমি ধরা পড়া ফলাফলগুলির মাধ্যমে ফিল্টার করতে পারি তবে এটি আরও কাজের মতো বলে মনে হচ্ছে ...

আমি কি স্পষ্ট কিছু মিস করছি? আমি জাভাতে এটি ব্যবহার করছি, যদি এটি প্রাসঙ্গিক হয়।


রুবারার লিঙ্কটির জন্য এক +1 খুব ভাল
বুকোভস্কি

উত্তর:


181

নিয়মিত প্রকাশের প্রয়োগের উপর নির্ভর করে আপনি সিনট্যাক্স সহ তথাকথিত নন-ক্যাপচারিং গ্রুপগুলি ব্যবহার করতে পারেন (?:…):

((?:a|b)c)

এখানে (?:a|b)একটি গোষ্ঠী রয়েছে তবে আপনি এর মিলটি উল্লেখ করতে পারবেন না। তাই আপনি যদি শুধুমাত্র ম্যাচ রেফারেন্স করতে ((?:a|b)c)যে হয় হয় acবা bc


এটা এটা করেছে! সুপার দ্রুত প্রতিক্রিয়া জন্য ধন্যবাদ। আমি সময় সীমা (যা আমি জানতাম না) বিদ্যমান থাকার পরে গ্রহণ করব।
goggin13

4
আমি ভেবেছিলাম ধারণা ক্যাপচার ছিল না aবা bএ সব। অন্য কথায়, মেলে ac বা bc, তবে কেবল এটি ক্যাপচার করুন c:(?:a|b)(c)
অ্যালান মুর

1
@ অ্যালানমুর কি বা বিবৃতিতে একটি এবং অন্যটিকে ধরা সম্ভব নয়? সুতরাং আমি প্যাটার্নটি খুঁজছি acবা ab, তবে আমি আউটপুট চাই abযদি abকেবল 'সি' হয় আউটপুটটি 'এসি' হয়।
মুনড্রা

24

যদি আপনার প্রয়োগটিতে এটি থাকে তবে আপনি ক্যাপচার না করার প্রথম বন্ধনী ব্যবহার করতে পারেন:

(?:a|b)

@ মমতুজ দ্রুত প্রতিক্রিয়ার জন্য ধন্যবাদ! আমি আশা করি আমি উভয় উত্তর গ্রহণ করতে পারতাম, আমি যা খুঁজছিলাম ঠিক
সেটাই

3

এমনকি রুবুলার আপনাকে বন্ধনী ব্যবহার করে না এবং এর নজির |কম ced উদাহরণস্বরূপ একটি | বিসি সিসিসির সাথে মেলে না


'! ~' অপারেটর কী করে? আমি আপনার অভিব্যক্তিটি পছন্দ করি, কম প্যারেন সহ, রেজেক্স ইতিমধ্যে যথেষ্ট অগোছালো
goggin13

! "" মেলে না "এর জন্য একটি পারলিজম, এটি আমার পক্ষে খসখসে লেখা ছিল; স্থির, ধন্যবাদ।
এমএসডাব্লু

2
আমি তোমাকে পাই না আপনার প্যারেন্স ব্যবহার |করতে হবে এর কম নজির । (?:a|b)cম্যাচ acবা bc(পছন্দসই আচরণ), যখন a|bcম্যাচগুলি aবা bc
অ্যালান মুর 21

2

যদি আপনার ওআর বিকল্পগুলি সমস্ত একক অক্ষর হয় - আপনি কেবল "অক্ষর সেট" অপারেটরটি ব্যবহার করতে পারেন:

([ab]c)

এটি কেবল মিলবে acবা bcএটি আরও পাঠযোগ্য।

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