একটি হেক্সাডেসিমাল সংখ্যার জন্য নিয়মিত প্রকাশ?


113

আমি কীভাবে এমন একটি নিয়মিত এক্সপ্রেশন তৈরি করব যা কোনও পাঠ্যে হেক্সাডেসিমাল সংখ্যা সনাক্ত করে?

উদাহরণস্বরূপ, '0x0f4', '0ac دادecf822eeff32aca5830e438cb54aa722e3', এবং '8BADF00D'।


1
Regex আসলে পার্স করে না। সমস্ত সংখ্যার মতো জিনিস বের করার চেষ্টা করুন এবং যেগুলি হেক্সাডেসিমাল নয় তা বের করে দেখুন।
ব্লেন্ডার

উত্তর:


193

নিম্নলিখিত সম্পর্কে কীভাবে?

0[xX][0-9a-fA-F]+

নিম্নের সাথে বড় হাতের অক্ষর x দ্বারা অনুসরণ করে 0 দিয়ে শুরু হওয়া এক্সপ্রেশনটির সাথে মিল রয়েছে, তার পরে 0-9, বা AF, বা AF এর রেঞ্জের এক বা একাধিক অক্ষর রয়েছে


35
এটি সংক্ষিপ্ত করা যেতে পারে /0x[\da-f]/i, তবে অন্যথায়, +1।
নিক্লাস বি।

20
@NiklasB। আপনার শর্টহ্যান্ড কেবলমাত্র পার্ল রেজেেক্স ব্যবহারের ক্ষেত্রে বৈধ, যদি পসিক্স রেগেক্স ব্যবহার করে থাকে তবে স্টিভেনের সমাধানটি সবচেয়ে কম। যে কোনও উপায়ে, স্টিভেনের সমাধান পারল এবং পসিক্স রেজেক্স উভয়ের জন্যই কাজ করে।
ডেভিড এম সিজডেক

বুঝেছি! স্টেক্স দ্বারা সমাধান ভাল যদি হেক্স নম্বর 0x বা 0 এক্স দিয়ে শুরু হয়। এটির আরও ভাল কাজ করা উচিত: ^ [0-9A-F] + $ এটি হেক্স প্যাটার্নগুলি যেমন: '535GH0G73' সনাক্ত করতে পারে জাভা জন্য, আমরা এটি পরীক্ষার জন্য উদাহরণস্বরূপ স্ট্রিং.ম্যাচগুলি () ব্যবহার করতে পারি .. প্রতিক্রিয়াটির জন্য আপনাকে ধন্যবাদ :)
সর্সারি

2
'0x [\ দা-এফ] {2}' সংখ্যাটিও সীমাবদ্ধ করার পক্ষে আরও ভাল প্রস্তাব দেয়
ইয়াজান রাওয়াসদেহ

2
এটি কি দ্বিতীয় এবং তৃতীয় উদাহরণ সংখ্যার সাথে মিলে যাবে, 0acdadecf822eeff32aca5830e438cb54aa722e3 এবং 8BADF00D?
পিটার মর্টেনসেন

43

সঠিক বাক্য গঠন আপনার সঠিক প্রয়োজনীয়তা এবং প্রোগ্রামিং ভাষার উপর নির্ভর করে তবে মূলত:

/[0-9a-fA-F]+/

বা আরও সহজভাবে, iএটি কেস-সংবেদনশীল করে তোলে।

/[0-9a-f]+/i

আপনি যদি রুবি ব্যবহারের জন্য যথেষ্ট ভাগ্যবান হন তবে আপনি এটি করতে পারেন:

/\h+/

সম্পাদনা - স্টিভেন শ্রোয়েডারের উত্তর আমাকে বুঝতে পেরেছিল যে 0x বিট সম্পর্কে আমার বোঝা ভুল ছিল, তাই আমি সে অনুযায়ী আমার পরামর্শগুলি আপডেট করেছি। আপনি যদি 0x মেলাতে চান তবে সমতুল্য

/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i

আরও যুক্ত করুন - যদি 0x alচ্ছিক হওয়া প্রয়োজন (যেমন প্রশ্নটি বোঝায়):

/(0x)?[0-9a-f]+/i

আপনি কি আমাকে উপরের আর এর কারণ ব্যাখ্যা করতে পারেন?
সরসারি

4
@NoobDroid আপনি বিশেষত আমার কী ব্যাখ্যা করতে চান?
সাইমনমায়ার

18

কোনও বড় বিষয় নয়, তবে বেশিরভাগ রেজেক্স ইঞ্জিনগুলি পসিক্স চরিত্রের ক্লাসগুলিকে সমর্থন করে এবং [:xdigit:]হেক্স অক্ষরের সাথে ম্যাচিংয়ের জন্য রয়েছে যা সাধারণ স্টাফের চেয়ে সহজ 0-9a-fA-F

সুতরাং, অনুরোধ হিসাবে রেজেক্স (যেমন optionচ্ছিক সহ 0x) হ'ল:/(0x)?[[:xdigit:]]+/



11

এটি উল্লেখ করার মতো যে একটি MD5 সনাক্তকরণ (যা উদাহরণগুলির মধ্যে একটি) এর মাধ্যমে করা যেতে পারে:

[0-9a-fA-F]{32}

5

আপনি যদি পার্ল বা পিএইচপি ব্যবহার করছেন তবে আপনি প্রতিস্থাপন করতে পারেন

[0-9a-fA-F]

সঙ্গে:

[[:xdigit:]]

এটি একটি স্ব-নির্ভর উত্তর হওয়া উচিত।
পিটার মর্টেনসেন

3

কেবল রেকর্ডের জন্য আমি নিম্নলিখিতগুলি নির্দিষ্ট করব:

/^[xX]?[0-9a-fA-F]{6}$/

মধ্যে এটি চেক এটা যা পৃথক হয়েছে ছয় বৈধ অক্ষর এবং ক্ষেত্রে ছোট হাতের বা বড় হাতের এক্স আমরা এক আছে ধারণ।


2

আপনি যদি স্ট্রিংয়ের মাঝখানে একটি নির্দিষ্ট হেক্স অক্ষর সন্ধান করছেন তবে আপনি "\ xhh" ব্যবহার করতে পারেন যেখানে hh হেক্সাডেসিমালের চরিত্র। আমি চেষ্টা করেছি এবং এটি কাজ করে। আমি সি ++ কিউটি জন্য কাঠামো ব্যবহার করি তবে এটি অন্যান্য ক্ষেত্রে সমস্যার সমাধান করতে পারে, আপনার যে স্বাদটি ব্যবহার করা প্রয়োজন তার উপর নির্ভর করে (পিএইচপি, জাভাস্ক্রিপ্ট, পাইথন, গোলং ইত্যাদি)।

এই উত্তরটি নেওয়া হয়েছিল: http://ult-tex.net/info/perl/


হে! যদিও পার্লের ক্ষেত্রে এটি সত্য হতে পারে তবে সমস্ত প্রোগ্রামিং ভাষায় নিয়মিত প্রকাশের ক্ষেত্রে এটি মনে হয় না। মতে এই \x সমতূল্য \uঅন্যান্য ভাষায়।
মরিস

"স্পেসিফিক অ্যান্ডা" কী?
পিটার মর্টেনসেন

0

এইটি নিশ্চিত করে যে আপনার কাছে আরও তিনটি বৈধ জোড় নেই:

(([a-fA-F]|[0-9]){2}){3}

বৈধ অক্ষরের আরও তিনটি বা কম জোড় মিলতে ব্যর্থ।


0

যদি কোনও ইনপুটটির মধ্যে আপনার এটির প্রয়োজন হয় যেখানে ব্যবহারকারী টাইপ করতে পারে 0এবং প্রিফিক্স 0xব্যতীত কোনও হেক্স নম্বর নয় তবে 0x:

^0?[xX]?[0-9a-fA-F]*$

0

আর একটি উদাহরণ: সিএসএস রঙের জন্য হেক্সাডেসিমাল মানগুলি পাউন্ড সাইন, বা হ্যাশ (#) দিয়ে শুরু হয়, তারপরে ছয়টি অক্ষর যা হয় একটি সংখ্যা বা এ এবং এফ এর মধ্যে একটি বর্ণ হতে পারে, সমেত।

^#[0-9a-fA-F]{6}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.