regex - Gadaffi জন্য অনুসন্ধান নিয়মিত অভিব্যক্তি




search (10)

[GQK] [আহু] [dtez] \ '[adhz] + F {1,2} (ঝ | Y)?

অংশে:

  • [GQK]
  • [আহু]
  • [dtez]
  • \ '?
  • [adhz]
  • চ {1,2} (ঝ | Y)

দ্রষ্টব্য: শুধু regex শিখেছি এবং এটি একটি শট দিতে চেয়েছিলেন। পরে ছোট ভুল ঠিক করা হবে

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

আমার সেরা প্রচেষ্টা এতদূর হল:

\b[KG]h?add?af?fi$\b

কিন্তু আমি এখনও কিছু জার্নাল অনুপস্থিত বলে মনে হচ্ছে। কোনও পরামর্শ?

আপডেট: আমি এখানে একটি সুন্দর তালিকা খুঁজে পেয়েছি: http://blogs.abcnews.com/theworldnewser/2009/09/how-many-different-ways-can-you-spell-gaddafi.html

নীচের উত্তরটি সমস্ত 30 টি রূপের সাথে মেলে:

Gadaffi
Gadafi
Gadafy
Gaddafi
Gaddafy
Gaddhafi
Gadhafi
Gathafi
Ghadaffi
Ghadafi
Ghaddafi
Ghaddafy
Gheddafi
Kadaffi
Kadafi
Kaddafi
Kadhafi
Kazzafi
Khadaffy
Khadafy
Khaddafi
Qadafi
Qaddafi
Qadhafi
Qadhdhafi
Qadthafi
Qathafi
Quathafi
Qudhafi
Kad'afi

CPAN মডিউল ব্যবহার করে Regexp :: সমষ্টি :

#!/usr/bin/env perl

use Regexp::Assemble;

my $ra = Regexp::Assemble->new;
$ra->add($_) for qw(Gadaffi Gadafi Gadafy Gaddafi Gaddafy
                    Gaddhafi Gadhafi Gathafi Ghadaffi Ghadafi
                    Ghaddafi Ghaddafy Gheddafi Kadaffi Kadafi
                    Kaddafi Kadhafi Kazzafi Khadaffy Khadafy
                    Khaddafi Qadafi Qaddafi Qadhafi Qadhdhafi
                    Qadthafi Qathafi Quathafi Qudhafi Kad'afi);
say $ra->re;

এটি নিম্নলিখিত নিয়মিত অভিব্যক্তি উত্পন্ন করে:

(?-xism:(?:G(?:a(?:d(?:d(?:af[iy]|hafi)|af(?:f?i|y)|hafi)|thafi)|h(?:ad(?:daf[iy]|af?fi)|eddafi))|K(?:a(?:d(?:['dh]a|af?)|zza)fi|had(?:af?fy|dafi))|Q(?:a(?:d(?:(?:(?:hd)?|t)h|d)?|th)|u(?:at|d)h)afi))

আচ্ছা আপনি ছোট ছোট শব্দগুলি Levenshtein কেন আপনি Levenshtein দূরত্বের সাথে একটি সাদৃশ্য অনুসন্ধান ইঞ্জিন ব্যবহার করেন না? আপনি অধিকাংশ K সন্নিবেশ বা মুছে ফেলা অনুমতি দিতে পারেন। এই ভাবে আপনি দূরত্বের ফাংশনটি অন্য কিছুতে পরিবর্তন করতে পারেন যা আপনার নির্দিষ্ট সমস্যার জন্য আরও ভাল কাজ করে। সিমমেট্রিক লাইব্রেরিতে অনেকগুলি ফাংশন পাওয়া যায়।


আপনার সম্ভাব্য বানান তালিকা থেকে নোট করার একটি আকর্ষণীয় বিষয় হল যে শুধুমাত্র তালিকার জন্য 3 সাউন্ডেক্স মান রয়েছে (যদি আপনি 'Kazzafi' এর বাহিরে উপেক্ষা করেন)

জি 310, কে 310, Q310

এখন, সেখানে মিথ্যা ইতিবাচক রয়েছে ('গডবি' এছাড়াও G310), তবে সীমিত মেটাফোন হিটগুলির সাথে মিলিয়েও, আপনি তাদের নির্মূল করতে পারেন।

<?
$soundexMatch = array('G310','K310','Q310');
$metaphoneMatch = array('KTF','KTHF','FTF','KHTF','K0F');

$text = "This is a big glob of text about Mr. Gaddafi. Even using compound-Khadafy terms in here, then we might find Mr Qudhafi to be matched fairly well. For example even with apostrophes sprinkled randomly like in Kad'afi, you won't find false positives matched like godfrey, or godby, or even kabbadi";

$wordArray = preg_split('/[\s,.;-]+/',$text);
foreach ($wordArray as $item){
    $rate = in_array(soundex($item),$soundexMatch) + in_array(metaphone($item),$metaphoneMatch);
    if ($rate > 1){
        $matches[] = $item;
    }
}
$pattern = implode("|",$matches);
$text = preg_replace("/($pattern)/","<b>$1</b>",$text);
echo $text;
?>

কিছু tweaks, এবং কিছু সাইরিলিক লিপ্যন্তর বলুন, এবং আপনি একটি মোটামুটি শক্তসমর্থ সমাধান হবে।


আমি এখানে আপনি জটিল জিনিস উপর করছি মনে হয়। সঠিক Regex হিসাবে হিসাবে সহজ:

\u0627\u0644\u0642\u0630\u0627\u0641\u064a

এটি সাতটি আরবি ইউনিকোড কোড পয়েন্টের সাথে মিলিত হয় যা শব্দটি অভিফাই (অর্থাৎ গাদফী) শব্দটি তৈরি করে।


আমি জানি এটি একটি পুরনো প্রশ্ন, কিন্তু ...

এই দুটি রেজেক্সগুলির মধ্যে কোনটিই সবচেয়ে সুন্দর, তবে এটি অপ্টিমাইজ করা হয় এবং উভয় মূল পোস্টে সমস্ত বৈচিত্রের সাথে মিলে যায়।

"লিটল বিউটি" # 1

(?:G(?:a(?:d(?:d(?:af[iy]|hafi)|af(?:f?i|y)|hafi)|thafi)|h(?:ad(?:daf[iy]|af?fi)|eddafi))|K(?:a(?:d(?:['dh]a|af?)|zza)fi|had(?:af?fy|dafi))|Q(?:a(?:d(?:(?:(?:hd)?|t)h|d)?|th)|u(?:at|d)h)afi)

"লিটল বিউটি" # 2

(?:(?:Gh|[GK])adaff|(?:(?:Gh|[GKQ])ad|(?:Ghe|(?:[GK]h|[GKQ])a)dd|(?:Gadd|(?:[GKQ]a|Q(?:adh|u))d|(?:Qad|(?:Qu|[GQ])a)t)h|Ka(?:zz|d'))af)i|(?:Khadaff|(?:(?:Kh|G)ad|Gh?add)af)y

শান্তি বিশ্রাম, Muammar।


যদি আপনি এমন মিলযুক্ত জিনিসগুলিকে এড়াতে চান যা কেউ ব্যবহার করেনি (অর্থাৎ "। +" এর দিকে ঝুঁকে পড়বে) আপনার সর্বোত্তম পদ্ধতির একটি নিয়মিত অভিব্যক্তি তৈরি করা উচিত যা কেবলমাত্র সমস্ত বিকল্প (যেমন। (কাদাফি | কাদাফি | ...) ) তারপর একটি DFA এ কম্পাইল করুন এবং তারপরে DFA কে একটি নিয়মিত অভিব্যক্তিতে রূপান্তর করুন। একটি মাঝারি বুদ্ধিমান বাস্তবায়ন অনুমান করা যা আপনাকে একটি "সংকুচিত" নিয়মিত অভিব্যক্তি দেবে যা অপ্রত্যাশিত রূপ ধারণ না করার নিশ্চয়তা দেয়।


শুধু একটি সংযোজন: আপনি বিকল্প বানান হিসাবে "Gheddafi" যোগ করা উচিত। সুতরাং আরই হতে হবে

\b[KG]h?[ae]dd?af?fi$\b

উদাহরণস্বরূপ http://regex.inginf.units.it থেকে নিয়মিত এক্সপ্রেশন জেনারেট করার জন্য একটি অনলাইন বিকল্প একটি সম্ভাব্য বিকল্প। এটিকে একটা সুযোগ দাও!


\b[KGQ]h?add?h?af?fi\b

আরবী ট্রান্সক্রিপশনটি (উইকি বলে) "কাফাফী", তাই সম্ভবত একটি প্রশ্ন যোগ করা এবং একটি এইচ ("গাদ্দাফি", নিবন্ধ হিসাবে (নীচে দেখুন) উল্লেখ)।

বিটিউ, কেন রেজেক্সের শেষে একটি $ আছে?

বিটিউ, এই বিষয়ে চমৎকার নিবন্ধ:

গাদ্দাফী, কাদাফি বা কাদ্দাফি? কেন লিবিয়ার নেতার নাম এত ভিন্ন উপায়ে বানিয়েছে?

সম্পাদনা

আপনি যে নিবন্ধটি পরে উল্লেখ করেছেন তাতে সমস্ত নাম মেলে, এটি তাদের সকলের সাথে মেলে। আসুন আশা করি এটি অন্যান্য স্টাফের সাথে মিলবে না

\b(Kh?|Gh?|Qu?)[aeu](d['dt]?|t|zz|dhd)h?aff?[iy]\b







search