আমার কাছে একটি রেইজেক্স দরকার যা সমস্ত কিছু মেলে তবে একটি স্ট্রিং নির্দিষ্ট প্যাটার্ন দিয়ে শুরু হয় (বিশেষত index.php
এবং এরপরে যা অনুসরণ করে, পছন্দ করে index.php?id=2342343
)
আমার কাছে একটি রেইজেক্স দরকার যা সমস্ত কিছু মেলে তবে একটি স্ট্রিং নির্দিষ্ট প্যাটার্ন দিয়ে শুরু হয় (বিশেষত index.php
এবং এরপরে যা অনুসরণ করে, পছন্দ করে index.php?id=2342343
)
উত্তর:
কোনও রেজিপ্স্প বিশেষজ্ঞ নয়, তবে আমি মনে করি আপনি প্রথম থেকেই নেতিবাচক চেহারা ব্যবহার করতে পারেন, উদাহরণস্বরূপ ^(?!foo).*$
কোনও কিছুর সাথে মেলা উচিত নয় foo
।
^((?!foo).)*$
( stackoverflow.com/a/406408/3964381 )
রেজেক্স: সমস্ত কিছুর সাথে মেলে তবে :
foo
):
world.
শেষে নেই):
foo
) (কোন POSIX অনুবর্তী patern, দুঃখিত):
|
প্রতীক):
foo
):
cat
): /cat(*SKIP)(*FAIL)|[^c]*(?:c(?!at)[^c]*)*/i
বা/cat(*SKIP)(*FAIL)|(?:(?!cat).)+/is
(cat)|[^c]*(?:c(?!at)[^c]*)*
(বা (?s)(cat)|(?:(?!cat).)*
, বা (cat)|[^c]+(?:c(?!at)[^c]*)*|(?:c(?!at)[^c]*)+[^c]*
) এবং তারপরে ভাষার অর্থ পরীক্ষা করে দেখুন: যদি গ্রুপ 1 মিলছে তবে এটি আমাদের যা প্রয়োজন তা নয়, অন্যথায়, খালি না হলে ম্যাচের মানটি ধরুন[^a-z]+
(ছোট হাতের ASCII চিঠি ব্যতীত অন্য কোনও চর)|
:[^|]+
ডেমো দ্রষ্টব্য : \n
পার্শ্ববর্তী লাইন (গুলি) এর সাথে ম্যাচের ওভারফ্লো এড়াতে ডেমোগুলিতে অবহেলিত চরিত্রের শ্রেণীর ভিতরে নতুন লাইন ব্যবহৃত হয়। পৃথক স্ট্রিং পরীক্ষা করার সময় এগুলি প্রয়োজনীয় নয়।
অ্যাঙ্কর দ্রষ্টব্য : \A
স্ট্রিংয়ের একেবারে প্রান্তটি সংজ্ঞায়িত করার জন্য অনেক ভাষায় স্ট্রিংয়ের দ্ব্যর্থহীন সূচনা সংজ্ঞায়িত করতে ব্যবহার করুন এবং \z
(পাইথনে এটি \Z
জাভাস্ক্রিপ্টে $
ঠিক আছে)।
ডট নোট : অনেক স্বাদে (তবে পসিক্স, টিআরই, টিসিএল নয়), .
কোনও লাইন চর ছাড়া অন্য কোনও চরকে মেলে । নিশ্চিত করুন যে আপনি একটি নতুন লাইন সহ যেকোন চরের সাথে মিলে যাওয়ার জন্য একটি প্রাসঙ্গিক ডটল মোডিফায়ার ( /s
পিসিআরই / বুস্ট /। নেট / পাইথন / জাভা এবং /m
রুবিতে) ব্যবহার করেছেন Make.
ব্যাকস্ল্যাশ নোট : LANGUAGES যেখানে আপনি (যেমন পালাবার ক্রম যার ফলে সি স্ট্রিং সঙ্গে নিদর্শন ডিক্লেয়ার করা আছে ইন \n
, আপনি ব্যাকস্ল্যাশ বিশেষ অক্ষর তাই পলায়নের দ্বিগুণ ইঞ্জিন (আক্ষরিক অক্ষর তাদের আচরণ পারে প্রয়োজন একটি newline জন্য) যেমন জাভা, world\.
হতে হবে হিসাবে ঘোষিত হয়েছে "world\\."
, বা একটি অক্ষর শ্রেণি ব্যবহার করুন "world[.]"
:)। কাঁচা স্ট্রিং লিটারেলস (পাইথন r'\bworld\b'
), সি # ভারব্যাটিম স্ট্রিং লিটারেলস @"world\."
, বা স্ল্যাশ স্ট্রিং / রেজেক্স আক্ষরিক স্বরলিপিগুলি ব্যবহার করুন /world\./
।
^(?!foo$)
, ডলার চিহ্নটি কাজ করার জন্য কেন বন্ধুত্বের মধ্যে থাকতে হবে? আমি ^(?!foo)$
একই ফলাফল দেওয়ার প্রত্যাশা করছিলাম , তবে তা হয় না।
$
অ্যাঙ্করটি লুকোয়ারহেডের অভ্যন্তরে থাকে তখন এটি শর্তের একটি অংশ, সেই শূন্য প্রস্থের দৃser় অংশের অংশ । যদি এটি বাইরে থাকে তবে এর মতো ^(?!foo)$
এটি স্ট্রিংয়ের শুরু হওয়ার পরে স্ট্রিংয়ের শেষের প্রয়োজন হয় এমন গ্রাসকারী প্যাটার্নের অংশ হবে যা নেতিবাচক বর্ণনাকে অপ্রাসঙ্গিক করে তোলে কারণ এটি সর্বদা সত্য ফিরে আসবে (স্ট্রিং শেষ হওয়ার পরে কোনও পাঠ্য থাকতে পারে না) , একা যাক foo
)। সুতরাং, এর সাথে ^(?!foo$)
মিলিত হয় না এমন একটি স্ট্রিংয়ের শুরু ম্যাচগুলি foo
স্ট্রিং শেষের সাথে অনুসরণ করা হয়। ^(?!foo)$
একটি খালি স্ট্রিংয়ের সাথে মেলে।
cot
বা এর মধ্যে প্রথমটির মধ্যে স্ট্রিংগুলি খুঁজে পাওয়া উচিত lan
, এবং ম্যাচটি মুছে ফেলুন, এর মতো regex.replace(myString, "^.*?(?:cot|lan)\s*", "")
।
আপনি ^
এই অক্ষরগুলি ছাড়া আর কোনও কিছুর সাথে মিল রাখতে কোনও অক্ষর সেট শুরুতে রাখতে পারেন ।
[^=]*
সব মিলবে কিন্তু =
ঠিক মেলে /^index\.php/
তবে যা কিছু মেলে তা প্রত্যাখ্যান করুন।
str !~ /\Aindex\.php/
।
আমি একটি Regex সক্ষম প্রয়োজন সবকিছু মেলে কিন্তু ছাড়া একটি দিয়ে শুরু স্ট্রিং
index.php
একটি নির্দিষ্ট প্যাটার্ন (বিশেষভাবে index.php এবং কি অনুসরণ করে, index.php মত? আইডি = 2342343)
ব্যবহারের পদ্ধতি Exec এর
let match,
arr = [],
myRe = /([\s\S]+?)(?:index\.php\?id.+)/g;
var str = 'http://regular-viragenia/index.php?id=2342343';
while ((match = myRe.exec(str)) != null) {
arr.push(match[1]);
}
console.log(arr);
var myRe = /([\s\S]+?)(?:index\.php\?id=.+)/g;
var str = 'http://regular-viragenia/index.php?id=2342343';
var matches_array = myRe.exec(str);
console.log(matches_array[1]);
বা অন্য ম্যাচ
let match,
arr = [],
myRe = /index.php\?id=((?:(?!index)[\s\S])*)/g;
var str = 'http://regular-viragenia/index.php?id=2342343index.php?id=111index.php?id=222';
while ((match = myRe.exec(str)) != null) {
arr.push(match[1]);
}
console.log(arr);
রিজেক্স ব্যবহার না করা সম্পর্কে:
// In PHP
0 !== strpos($string, 'index.php')
grep
উদাহরণস্বরূপ, তিনি কমান্ড-লাইনে বা পার্ল / পাইথন / অন্য কোনও ভাষা ব্যবহার করতে পারেন, বা কোনও পাঠ্য সম্পাদকের মধ্যে "প্রতিটি রেখার জন্য এই রেজেক্সটি কার্যকর করুন" ইত্যাদি))