একটি শব্দযুক্ত অন্য একটি নয় এমন স্ট্রিংয়ের জন্য নিয়মিত প্রকাশ


103

আমি গুগল অ্যানালিটিক্সে কিছু লক্ষ্য সেট আপ করছি এবং একটি সামান্য রেগেক্স সহায়তা ব্যবহার করতে পারি।

বলি আমার 4 টি ইউআরএল রয়েছে

http://www.anydotcom.com/test/search.cfm?metric=blah&selector=size&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah2&selector=style&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah3&selector=size&value=1
http://www.anydotcom.com/test/details.cfm?metric=blah&selector=size&value=1

আমি একটি এক্সপ্রেশন তৈরি করতে চাই যা এমন কোনও ইউআরএল সনাক্ত করবে যা স্ট্রিং সিলেক্টর = আকার ধারণ করে তবে এতে বিবরণ থাকে না সিএফএম

আমি জানি যে একটি স্ট্রিং খুঁজে পেতে যাতে অন্য স্ট্রিং না থাকে আমি এই ভাবটি ব্যবহার করতে পারি:

(^((?!details.cfm).)*$)

তবে, আমি নির্বাচক = আকার অংশে কীভাবে যুক্ত করব তা নিশ্চিত নই ।

কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে!

উত্তর:


144

এটি করা উচিত:

^(?!.*details\.cfm).*selector=size.*$

^.*selector=size.*$যথেষ্ট পরিষ্কার হওয়া উচিত। প্রথম বিটটি (?!.*details.cfm)হ'ল নেতিবাচক চেহারা: স্ট্রিংয়ের সাথে মিলে যাওয়ার আগে স্ট্রিংটি পরীক্ষা করে "Details.cfm" থাকে না (এর আগে কোনও সংখ্যক অক্ষরের সাথে)।


8
এফওয়াইআই, এই এক্সপ্রেশনগুলি পরীক্ষা করার জন্য একটি ভাল উপায়ের জন্য regexr.com দেখুন
জোশুয়া পিন্টার 14

সর্বদা নেতিবাচক চেহারা সম্পর্কে ভুলে যান এবং এটি এত দরকারী
আলেক্সি ব্লু

"http://www.anydotcom.com/test/search.cfm?metric=blah&selector=sized&value=1" =~ /^(?!.*details\.cfm).*selector=size.*$/ #=> 0ভুল. (নোটটিতে স্ট্রিং রয়েছে "...selector=sized...")) এছাড়াও, .*$শেষে কেন ?
কেরি সোভোল্যান্ড

4

রেজেক্স (পার্ল সিনট্যাক্স) হতে পারে:

`/^[(^(?!.*details\.cfm).*selector=size.*)|(selector=size.*^(?!.*details\.cfm).*)]$/`

এটি একটি দূষিত রেইজেক্স, বর্গাকার বন্ধনী সমস্ত প্যাটার্ন সিকোয়েন্সগুলি পৃথক অক্ষরের সংমিশ্রণে পরিণত করে।
উইক্টর স্ট্রিবিউউ

2
^(?=.*selector=size)(?:(?!details\.cfm).)+$

যদি আপনার রেজেক্স ইঞ্জিন পোসেসিভ কোয়ান্টিফায়ারকে সমর্থন করে (যদিও আমি সন্দেহ করি গুগল অ্যানালিটিক্স এটি না করে) তবে আমি অনুমান করি যে এটি বড় ইনপুট সেটগুলির জন্য আরও ভাল সম্পাদন করবে:

^[^?]*+(?<!details\.cfm).*?selector=size.*$

ধরে নেওয়া যায় selector=sizeএটি সর্বদা আগে ছিল details.cfm, যা শেষ ইউআরএলের ক্ষেত্রে নয়।
কোবি

শুধু এটি পরিষ্কার করার জন্য, এটি আমি ছিল না। আমি দেখতে পাচ্ছি না কেন কেউ এখানে দুটি উত্তর নীচে ভোট দেবে, সেগুলি উভয়ই সঠিক।
কোবি

@ কোবি: এটি একদম এগিয়ে, সংশোধন করা উচিত ছিল। ওহ, যাইহোক, আমি সন্দেহ করি নি যে এটি আপনার ডাউন-ভোট।
তোমালাক

0

--line-bufferedওপি এবং কোবির সমাধানটি আমার পক্ষে দুর্দান্ত কাজ করে বলে আমি একইরকম পরিস্থিতিতে একটি লেজের উপর এড়াতে চাইছি। আমার ক্ষেত্রে "বট" বা "মাকড়সা" সহ লাইনগুলি বাদ দিলে ' / '(আমার মূল ডকুমেন্টের জন্য) অন্তর্ভুক্ত।

আমার মূল আদেশ:

tail -f mylogfile | grep --line-buffered -v 'bot\|spider' | grep ' / '

এখন হয়ে যায় ( -Pপার্ল স্যুইচ সহ):

tail -f mylogfile | grep -P '^(?!.*(bot|spider)).*\s\/\s.*$'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.