রেজেক্স গ্রেপ-তে প্রত্যাশা অনুযায়ী কাজ করছে না


0

আমার সমস্যাটি একটি রেজেক্স সম্পর্কে। ধন্যবাদ regexr, আমি একটি অভিব্যক্তি লিখতে সক্ষম হয়েছি যা routeলিনাক্স কমান্ড আমাকে দেওয়া ইন্টারফেসের সাথে মেলে ।

তবে আমি এটি দিয়ে ধরতে পারি না:

route | grep -Eo "(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$"

তা কেন?


যে তাত্ক্ষণিক সমস্যাটি আমি দেখছি তা হ'ল আপনি regexrরেগেজ ইন মোড়ানো ব্যবহার করছেন /(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$/igm। এবং আপনি যখন grepএটি ব্যবহার করছেন ঠিক (?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$। যেহেতু আপনি grepএমন একটি মাল্টলাইন চান যা কেবল উপস্থিত নেই; grepকঠোরভাবে এক সময় এক লাইন।
জ্যাকগল্ড

বিভিন্ন রেগেক্স উপভাষার গুচ্ছ রয়েছে। grep -Eএবং জাভাস্ক্রিপ্ট ( regexrএকটি দৃষ্টিকোণ থেকে একটি দৃষ্টিকোণ থেকে) হুবহু একই ব্যবহার করবেন না, তাই আপনি কেবলমাত্র রেজিস্ট্রার আউটপুটটিকে একটি প্রাথমিক পয়েন্ট হিসাবে ব্যবহার করতে পারেন।
jjlin

উত্তর:


2

বিভিন্ন প্রোগ্রাম (এবং উল্লিখিত প্রোগ্রামের বিভিন্ন সংস্করণ) বিভিন্ন রেগেক্স বাস্তবায়ন ব্যবহার করতে পারে। কোন বৈশিষ্ট্যটি সমর্থিত / সমর্থিত নয় তা জানতে আপনার রেজেক্স অংশটি কমানোর বা ভাঙ্গার চেষ্টা করুন।

উদাহরণস্বরূপ, আমাকে আপনার উদাহরণ থেকে নন-ক্যাপচারিং গ্রুপ নির্দিষ্টকারীকে সরিয়ে ফেলতে হবে ?:যাতে আমার জিএনইউ গ্রেপ সোলারিস 11-তে প্রত্যাশা অনুযায়ী চলতে পারে run

অথবা আপনি কি প্রতিস্থাপন করার চেষ্টা করতে পারেন -Eসঙ্গে -Pব্যবহার করার জন্য পার্ল Regex ইঞ্জিন যা, আমার ক্ষেত্রে, আমার করা গনুহ, grep আরও পরিবর্তন ছাড়া আপনার Regex চালাতে পারবেন।

route | grep -Po "(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$"

দ্রষ্টব্য: সোলারিস 11 এ জিএনইউ গ্রেপ অবস্থিত/usr/gnu/bin/grep

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