regular - স্ট্রিং জন্য Regex প্রদত্ত প্রত্যয় সঙ্গে শেষ না




regular expression (6)

".Tmp" দিয়ে শেষ না হওয়া ফাইলগুলি অনুসন্ধান করতে আমরা নিম্নলিখিত রেজেক্স ব্যবহার করি:

^(?!.*[.]tmp$).*$

রেজেক্স পরীক্ষক দ্বারা পরীক্ষা নিম্নলিখিত ফলাফল দেয়:

https://code.i-harness.com

আমি কিছু শর্ত সঙ্গে শেষ না কোন স্ট্রিং মেলে মেলে একটি সঠিক regex খুঁজে পেতে সক্ষম হয়েছে না । উদাহরণস্বরূপ, আমি একটি সঙ্গে শেষ কিছু মেলে না।

এই ম্যাচ

b
ab
1

এই মেলে না

a
ba

আমি জানি, রেজেক্সটি শেষ পর্যন্ত চিহ্নিত করতে $ দিয়ে শেষ হওয়া উচিত, যদিও আমি জানি না এটি কী অগ্রসর হওয়া উচিত।

সম্পাদনা : আসল প্রশ্ন আমার ক্ষেত্রে একটি বৈধ উদাহরণ বলে মনে হচ্ছে না। সুতরাং: একাধিক চরিত্র কিভাবে পরিচালনা করবেন? ab দিয়ে শেষ না কিছু বলবেন?

আমি এই থ্রেড ব্যবহার করে, এই ঠিক করতে সক্ষম হয়েছে:

.*(?:(?!ab).).$

যদিও এর বিপরীত দিকটি এটি একটি চরিত্রের একটি স্ট্রিংয়ের সাথে মেলে না।


আপনি grep ব্যবহার করছেন বা sed সিন্ট্যাক্স একটু ভিন্ন হতে হবে। লক্ষ্য করুন যে অনুক্রমিক [^a][^b] পদ্ধতি এখানে কাজ করে না:

[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n'
jd8a
8$fb
q(c
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^a]$"
8$fb
q(c
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^b]$"
jd8a
q(c
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^c]$"
jd8a
8$fb
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^a][^b]$"
jd8a
q(c
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^a][^c]$"
jd8a
8$fb
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^a^b]$"
q(c
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^a^c]$"
8$fb
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^b^c]$"
jd8a
[email protected]:~$ printf 'jd8a\n8$fb\nq(c\n' | grep ".*[^b^c^a]$"

FWIW , আমি Regex101 এ একই ফলাফল খুঁজে পাচ্ছি , যা আমি মনে করি জাভাস্ক্রিপ্ট সিনট্যাক্স।

খারাপ: https://regex101.com/r/MJGAmX/2
ভালো: https://regex101.com/r/LzrIBu/2


আপনি চেহারা চেহারা ব্যবহার করতে পারেন যদি গ্রহণযোগ্য উত্তর জরিমানা। যাইহোক, এই সমস্যা সমাধানের আরেকটি পদ্ধতি আছে।

আমরা যদি এই প্রশ্নের জন্য ব্যাপকভাবে প্রস্তাবিত রেজেক্সটি দেখি:

.*[^a]$

আমরা প্রায় এটি কাজ করবে। এটি একটি খালি স্ট্রিং গ্রহণ করা হয় না, যা একটু অস্বস্তিকর হতে পারে। তবে, শুধুমাত্র একটি চরিত্রের সাথে আচরণ করার সময় এটি একটি ছোটখাট সমস্যা। যাইহোক, যদি আমরা পুরো স্ট্রিং বাদ দিতে চাই, যেমন "abc", তাহলে:

.*[^a][^b][^c]$

করবেন না। এটি ac গ্রহণ করবে না, উদাহরণস্বরূপ।

যদিও এই সমস্যার জন্য একটি সহজ সমাধান আছে। আমরা কেবল বলতে পারি:

.{,2}$|.*[^a][^b][^c]$

বা আরো সাধারণ সংস্করণ:

.{,n-1}$|.*[^firstchar][^secondchar]$ n যেখানে আপনি যে স্ট্রিংটি চান তা secondchar ( abc এটি 3 এর জন্য), এবং secondchar , secondchar , ... প্রথম, দ্বিতীয়। .. আপনার স্ট্রিং এর nth অক্ষর ( abc এটি a , তারপর b , তারপর c )।

এটি একটি সাধারণ পর্যবেক্ষণ থেকে আসে যে পাঠ্য থেকে ছোট যে একটি স্ট্রিং আমরা নিষিদ্ধ করব না তা সংজ্ঞা দ্বারা এই পাঠ্য ধারণ করতে পারে না। সুতরাং আমরা ছোট যে কোনটি গ্রহণ করতে পারি ("ab" "abc" নয়), অথবা আমাদের গ্রহণযোগ্য হওয়ার জন্য যথেষ্ট কিছু কিন্তু শেষ না হওয়া পর্যন্ত।

এখানে এমন একটি উদাহরণ খুঁজে পাওয়া যায় যা সমস্ত ফাইল মুছে ফেলবে যা .jpg:

find . -regex '.{,3}$|.*[^.][^j][^p][^g]$' -delete


এটা চেষ্টা কর

/.*[^a]$/

[] একটি অক্ষর শ্রেণীকে নির্দেশ করে, এবং ^ অক্ষর শ্রেণীটিকে সবকিছু মিলিয়ে একটি অক্ষর শ্রেণীকে রূপান্তরিত করে।


যেকোন কিছু যা একটি --- এর সাথে শেষ হয় .*a$ সুতরাং যখন আপনি রেজেক্সটি মিলান তখন শর্তটি বাতিল করুন অথবা বিকল্পভাবে আপনিও করতে পারেন .*[^a]$ যেখানে [^a] অর্থ এমন কিছু যা কোনও not a


না ( ^ ) চিহ্নটি ব্যবহার করুন:

.*[^a]$

যদি আপনি বন্ধনীটির শুরুতে ^ চিহ্নটি রাখেন, তাহলে "বন্ধনীগুলির মধ্যে থাকা সবকিছু ছাড়া" এর অর্থ। $ কেবল শেষে একটি নোঙ্গর।

একাধিক অক্ষরের জন্য , শুধু তাদের নিজস্ব চরিত্র সেট তাদের সব রাখুন:

.*[^a][^b]$






regex