ভুল ব্র্যান্ডেড হাইপারলিঙ্ক খুঁজে পেতে Regex প্রশ্ন


0

আমি ফোনি / ফিশিং সাইটগুলি আমাদের কোম্পানির নামের একটি বৈচিত্র ব্যবহার করার চেষ্টা করে যে কোন হাইপারলিঙ্ক সনাক্ত করতে ইনকামিং ইমেলগুলির মাধ্যমে পার্স করার জন্য একটি regex কমান্ড চালানোর চেষ্টা করছি। আমাদের কোম্পানি abcdomain হয়। মানদণ্ড হল:

  1. আমাদের হাইপারলিঙ্কগুলি খুঁজুন (হোস্টনাম অংশ) যা আমাদের কোম্পানির নাম 'abcdomain' ধারণ করে
  2. আমরা যে সমস্ত ডোমেনগুলি নিজেদের নিবন্ধন করেছি তা বাদ দিন, যেমন, myabcdomain.com, site.abcdomain.com, abcdomain.net, ইত্যাদি)

আমার regex ভাল গঠিত হয় না এবং কিছু বৈচিত্র্যের অধীনে কাজ করবেন না। সমস্যাটি সম্ভবত আমি বাদ দিয়ে যাচ্ছি। প্রথমে, আমি সত্যিই 'abcdomain.com' বাদ দেওয়ার চেষ্টা করছিলাম কিন্তু Regex যেভাবে কাজ করে বলে মনে হচ্ছে না।

  • প্রশ্ন: (http[s]?|ftp)\S*?(abcdomain|myabcdomain)(?!\.com)
  • স্ট্রিং: http://www.abcdomain.com/logo/email/abcdomain-email-logo.png
  • ফলাফল: এই হতে হবে ছাঁটা কিন্তু প্রশ্নটি দ্বিতীয় আবদুর রহমানের হিট


  • প্রশ্ন: (http[s]?|ftp):\/\/([\dA-Za-z\.]*)(abcdomain|myabcdomain)(?!.com|..net)

  • স্ট্রিং: http://www.fakeabcdomain.com
  • ফলাফল: এই হতে হবে অন্তর্ভুক্ত কিন্তু আমার বর্জন শুধুমাত্র আঘাত ফলাফল দেখায়)

শুধু আঘাত করা উচিত এবং আমার নিজের অগ্রগতি উদাহরণ প্রদর্শন করতে চেয়েছিলেন। regexr.com/3trtg
David Rubino

মনে হচ্ছে রেজেক্স অনুসন্ধানকে বাইপাস করার অসীম সংখ্যক উপায় হতে পারে, রেজেক্সটি কতটা সাবধানে তৈরি করা যায় তা কতই না সতর্ক। আপনার কাছে কি অন্যান্য বিকল্প আছে? আপনি প্রেরকের ভৌগোলিক আইপি অবস্থান দ্বারা ফিল্টার করতে সক্ষম হবেন, সম্ভবত হাইপারলিঙ্কটি সন্ধান করুন এবং এটি একটি অভ্যন্তরীণ (সাদা তালিকাভুক্ত) আইপি-এর সাথে সংযোগ করে কিনা তা দেখুন, হাইপারলিঙ্কটি সন্ধান করুন এবং এটি আপনার সার্ভার / ডোমেন নিয়ামক (যেমন সাজানোর মতো) লিঙ্কটি যাচাই করার জন্য একটি হ্যান্ডশেক), বা চেকের অন্য কোন ফর্ম যা আরও নিরাপদ হতে পারে। Regex আপনি ব্যবহার করার অপশন আছে সব?
Trenly

উত্তর:


0

এই আপনার পরীক্ষা ক্ষেত্রে জন্য কাজ করে:

(?:ht|f)tps?://(?=[^/]*(?:myabcdomain|abcabcdomain|abcdomain(?:\.zendesk)?))(?!(?:\w+\.)?(?:myabcdomain|abcabcdomain|abcdomain(?:\.zendesk)?)\.com)\S+

ব্যাখ্যা:

(?:ht|f)tps?://         : protocol
(?=                     : positive lookahead, make sure we have after
  [^/]*                 : 0 or more non slash
  (?:                   : start non capture group
    myabcdomain         : literally
  |                     : OR
    abcabcdomain        : literally
  |                     : OR
    abcdomain           : literally
    (?:\.zendesk)?      : followed with optional
  )                     : end group
)                       : end lookahead
(?!                     : negative lookahead, make sure we don't a=have after
  (?:\w+\.)?            : optional, 1 or more word character and a dot
  (?:                   : start non capture group
    myabcdomain         : literally
  |                     : OR
    abcabcdomain        : literally
  |                     : OR
    abcdomain           : literally
    (?:\.zendesk)?      : followed with optional
  )                     : end group
  \.com                 : literally
)                       : end lookahead
\S+                     : 1 or more any character that is not a space

এটা মিলেছে:

<a href="http://abcdomain.products.com.vbs">
<a href="https://abcdomainproducts.com">
<a href="http://products.abcdomain.products.net">
<a href="https://products.abcdomainproducts.com/test">
<a href="http://fakeabcdomain.products.com.vbs">
<a href="http://myabcdomain.products.com.vbs">
<a href="http://fakeabcdomain.com">

এবং মেলে না:

<a href="http://products.myabcdomain.com/help">
<a href="http://abcdomain.zendesk.com/help">
<a href="http://myabcdomain.com/help">
<a href="http://abcdomain.com/help">
<a href="http://products.abcabcdomain.com">

দুঃখিত, এই myabcdomain উপর একটি আঘাত দেয়। এখানে উদাহরণস্বরূপ আমি ব্যবহার করছি: regexr.com/3trsr
David Rubino

@ ডেভিডরুবিনোঃ কেন বিভ্রান্তিকর? http://products.abcdomain.products.net কিন্তু ম্যাচ করা উচিত http://abcdomain.zendesk.com/help
Toto

দুঃখিত, যে অন্য লিঙ্ক ছিল যে আমি পরীক্ষা ছিল। আমি আমার মন্তব্য পোস্ট করার পরে, আমি দেখেছি যে একটি গ্রুপ একটি zendesk লিঙ্ক সেট আপ করেছে যে আমি বাদ দিতে হয়েছে।
David Rubino

1
@ ডেভিডরুবিনো: আমি একক রেজেক্স দিয়ে এটি করার সহজ উপায় খুঁজে পাচ্ছি না। আমি আপনাকে প্রথম স্ল্যাশ আগে স্ট্রিং বিভক্ত এবং প্রত্যেক উপাদান জন্য চেক সুপারিশ।
Toto

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