কমা ',' বা আধা-কোলন ';' বাদে কোন চরিত্রের সাথে প্রতিটি চরিত্রের মিল থাকবে?


344

একটি নির্দিষ্ট সংজ্ঞাযুক্ত চরিত্র বা অক্ষরের সেট ব্যতীত প্রতিটি চরিত্রের সাথে মিলবে এমন একটি রেজেক্স সংজ্ঞা দেওয়া কি সম্ভব?

মূলত, আমি কমা (,) বা আধা-কোলন (;) দ্বারা কোনও স্ট্রিং বিভক্ত করতে চেয়েছিলাম। সুতরাং আমি এটি একটি রেইজেক্সের সাথে করার কথা ভাবছিলাম যা কমা বা একটি আধা-কোলনের মুখোমুখি না হওয়া অবধি সমস্ত কিছুর সাথে মেলে।

উত্তর:


473
[^,;]+         

আপনি যে রেগেক্স প্রয়োগটি ব্যবহার করছেন তা নির্দিষ্ট করে নেই। তাদের বেশিরভাগের এমন একটি Splitপদ্ধতি রয়েছে যা ডিলিমিটরগুলি নেয় এবং তাদের দ্বারা বিভক্ত হয়। আপনি সেইটিকে একটি "সাধারণ" (বিনা ^) অক্ষর শ্রেণীর সাহায্যে ব্যবহার করতে চাইতে পারেন :

[,;]+

10
এবং প্রশ্নটি নির্দিষ্ট করে না যে সংলগ্ন বিভাজককে অনুমতি দেওয়া হয়েছে কি না, সুতরাং '+' লেজটি সামান্য সন্দেহজনক কিনা।
জোনাথন লেফলার

কেবলমাত্র সেমিকোলনের জন্য একটি ত্রুটি পাওয়া
নির্বিঘ্নিত রেজিএক্সপ্যাক্স

আমার অনুরূপ প্রয়োজনীয়তা ছিল যেখানে আমি সেমিকোলন এবং কমা এড়াতে চাই শেষ পর্যন্ত আমি অনেক চেষ্টা করেছিলাম তবে নীচে কোনও সাফল্য আমি কনস্ট রেজেক্সডোমাইন = / using ব্যবহার করছি না (?: [এ-জা-জেড -0] - (?: [ZA-z0-9 -] {0,61} [ZA-z0-9]) \) [ZA-z0-9] [ZA-z0-9 -]?। { 0,61} [ZA-z0-9] / ছ; ঠিক আছে যদি আমি ব্যবহার করি তা বৈধ হয় এবং; এর মাঝে তবে শেষ পর্যন্ত ব্যর্থ হয় li
হ্যারি 15

86

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

[^,;]


আমার অনুরূপ প্রয়োজনীয়তা ছিল যেখানে আমি সেমিকোলন এবং কমা এড়াতে চাই শেষে আমি অনেক চেষ্টা করেছিলাম তবে নীচে কোনও সাফল্য আমি কনস্ট রেজেক্সডোমাইন = / using ব্যবহার করছি না (?: [এ-জা-জেড -0] - (?: [ZA-z0-9 -] {0,61} [ZA-z0-9]) \) [ZA-z0-9] [ZA-z0-9 -]?। { 0,61} [ZA-z0-9] / ছ; ঠিক আছে যদি আমি ব্যবহার করি তা বৈধ হয় এবং; এর মাঝে তবে শেষ পর্যন্ত ব্যর্থ হয় li
হ্যারি


2

এটা ব্যবহার কর:

([^,;]*[,;])*

5
এর জন্য ফিল্ড বিভাজক হিসাবে পরিবর্তে ফিল্ড ডিলিমিটার হিসাবে কমা বা আধা-কোলন প্রয়োজন। 'লাইন' (বা অন্যান্য স্ক্যান করা রেকর্ড কাঠামো) এর শেষে পার্থক্যটি গুরুত্বপূর্ণ; সাধারণত, আপনি শেষ ক্ষেত্রের পরে কমা বা আধা-কোলনের উপর জোর দিতে চান না। যদি আপনার রেজেক্স ইঞ্জিন যথেষ্ট শক্তিশালী হয় তবে আপনি ' (?:([^,;]*)(?:[^,;]|$))' (পিসিআরই-নন-ক্যাপচারিং বন্ধনীগুলি সহ) ব্যবহার করতে পারেন । ক্ষেত্রের পরে কমা বা অর্ধ-কোলনের বিকল্পগুলি বা রেকর্ডের শেষে জিনিসগুলি আরও ভালভাবে কাজ করে। খালি ক্ষেত্র অনুমোদিত কিনা তাও বিবেচনা করুন।
জোনাথন লেফলার

1
অবশেষে, আপনাকে ক্যাপচারগুলির দ্বারা আসলে কী ফিরিয়ে দেওয়া হবে তা নিয়ে চিন্তা করতে হবে - আপনি কি সত্যিই পৃথককারীদের অন্তর্ভুক্ত করতে চেয়েছিলেন এবং যদি একটি লাইনে 10 টি ক্ষেত্র থাকে, তবে কয়টি ক্যাপচার স্বরলিপি দ্বারা ফিরে আসে?
জোনাথন লেফলার

1
আপনি সব কিছুর বিষয়ে ঠিকই বলেছেন তবে আমার উত্তরে আমি সেই জিনিসটি সংগীত করতে না পারার কারণ হ'ল আমি জানি না যে প্রশ্নকারীর RegEx এর ভাষা / গ্রন্থাগারটি কী জিজ্ঞাসা করছে। তিনি "জিআরইপি" ব্যবহার করছেন। যাইহোক, তাঁর পক্ষে বিষয়গুলি সাফ করার জন্য আপনি সেই মন্তব্যগুলি যুক্ত করার জন্য আপনাকে প্রশংসা করি। : ডি
নওয়ামন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.