রেগেক্স শেষ ঘটনা?


122

আমি শেষ ব্যাকস্ল্যাশ পরে
আমার শেষ অংশটি ধরার চেষ্টা করছি \Web_ERP_Assistant(সাথে \)

আমার ধারণাটি ছিল:

C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant


\\.+?(?!\\)      //  I know there is something with negative look -ahead `(?!\\)`

তবে আমি এটি খুঁজে পাচ্ছি না।

[Regexer Demo]


2
আমি প্রশংসা করি যে আপনার প্রশ্নটি রেজেক্সেস সম্পর্কিত, তবে আপনি কি নিশ্চিত যে এটি এখানে ব্যবহারের সেরা সরঞ্জাম? বেশিরভাগ স্ট্যান্ডার্ড লাইব্রেরিতে একটি পদ্ধতি থাকবে যা একটি প্রদত্ত ডিরেক্টরিতে শেষ পাথের নামটি পুনরুদ্ধার করবে। এটি প্রদত্ত ওএসে ডিরেক্টরি বিভাজক কী তাও আমলে নেয়।
স্টিভ রুকুটস

@ রাসকোলনিকভ আমাকে রেজিজেসে এটি দরকার। আমি Pth.getFileNameWithoutExration জানি। কোয়েশনটিকে রেজেক্স হিসাবে ট্যাগ করা হয়েছে
রই নমির

2
ঠিক আছে, যথেষ্ট ন্যায্য, ঠিক নিশ্চিত করা। আমি এটি তখন রেজিজেসে আরও দক্ষ লোকের কাছে রেখে দেব।
স্টিভ রুকুটস

উত্তর:


95

আপনার নেতিবাচক বর্ণন সমাধানটি হ'ল উদাহরণস্বরূপ:

\\(?:.(?!\\))+$

এটি রেগেক্সারে এখানে দেখুন


2
(?:একটি অ ক্যাপচারিং দলের শুরু। .কোন চরিত্র, এই চেক কোন চরিত্র যদি এটি একটি `দ্বারা অনুসরণ করা হয় না।
স্টিমা

মাল্টি লাইনটি কেবলমাত্র রেজেক্সার পরীক্ষার প্রয়োজন। এটি এর অর্থ পরিবর্তন করে $। স্ট্যান্ডার্ডটি স্ট্রিংয়ের শেষে, মাল্টলাইনের সাথে সারিটির শেষ হয়। কারণ রেজেক্সারে পরীক্ষার পাঠ্যের একাধিক সারি রয়েছে আমার সেখানে এই বিকল্পটি প্রয়োজন।
স্টিমা

আমি যদি আমার মূল প্রশ্নের মতো একই প্রশ্ন করতে চাই, তবে শুরুতে without ছাড়া কী করব?
রই নমির

2
(?:[^\\/](?!(\\|/)))+$শুরুতে স্ল্যাশ সরিয়ে দেয় এবং সামনে এবং পিছনে উভয় স্ল্যাশ সহ কপি করে। এটি কোনও প্যাঁচ
মরসওয়াদেজ

5
একটি পোক্ত লোলুপ টোকেন সালে ডট সবসময় lookahead পরে আসা উচিত: (?:(?!\\).)+। ( ref ) এছাড়াও, RegExr এ আপনার উদাহরণ দুটি পৃথক পথের উপাদানকে পৃথক করতে ব্যাকস্ল্যাশ ব্যবহার করে; শুধুমাত্র একটি থাকতে হবে, এবং রেজেক্সের সাথে কেবল একটির মিল থাকা উচিত । ( ডেমো )
অ্যালান মুর

62

আমার পক্ষে যে কাজ করেছে তা হ'ল:

.+(\\.+)$

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

.+     - any character except newline
(      - create a group
 \\.+   - match a backslash, and any characters after it
)      - end group
$      - this all has to happen at the end of the string

15
অংশগুলি ভাঙ্গার জন্য ধন্যবাদ :)
জেসন ব্রুস

1
আমি বিশেষত একটি রেইজেক্সের সন্ধান করছিলাম যা শেষ ফরোয়ার্ড স্ল্যাশ (/) এর সাথে মেলে। @ স্টেমা দ্বারা উপরোক্ত গৃহীত উত্তরটি সরিয়ে দেয় যখন ব্যাকস্ল্যাশ একটি ফরোয়ার্ড স্ল্যাশ দ্বারা প্রতিস্থাপন করা হয়। আপনার প্রত্যেকটি স্ল্যাশের অনুসরণে সমস্ত কিছু মিলছে, যা সত্যিকার অর্থে সমাধান সমাধান নয়। আমি আপনার উত্তরটিকে অগ্রাহ্য করলাম কারণ আপনার ব্যাখ্যাটি সাফল্য পেয়েছিল, যদিও আপনার সমাধানটি সত্যই কাজটি করে নি
Chidozie Nnachor

এটি এত সহজ এবং সাধারণভাবে নেতিবাচক বর্ণনীর চেয়ে ভাল, যতক্ষণ না এটি একটি লাইনে নিরবচ্ছিন্ন থাকে, কেন অতিরিক্ত সংযোজন?
স্কট অ্যান্ডারসন

42

সামনে একটি নেতিবাচক চেহারা একটি সঠিক উত্তর, তবে এটি আরও পরিষ্কারভাবে লেখা যেতে পারে:

(\\)(?!.*\\)

এটি \ এর একটি ঘটনার সন্ধান করে এবং তারপরে কোনও মিল খুঁজে না পাওয়া একটি চেকের জন্য, আপনি এটির পরে দেখাতে চান না এমন চরিত্রের অনুসরণ করে এমন অনেকগুলি অক্ষর সন্ধান করে। এটি নেতিবাচক হওয়ার কারণে এটি কোনও মিল খুঁজে পায় না তবেই এটি মেলে।


4
এটি শুধুমাত্র শেষ ব্যাকস্ল্যাশের সাথে মেলে । ওপিও এর পরেও সবকিছু মিলে যেতে চায়।
অ্যালান মুর

খুব সহায়ক, এই ক্লিনার সংস্করণটি যদিও কেবল ব্যাকস্ল্যাশ ক্যাপচার করেছিল, সমস্ত কিছু ক্লিক করে। ধন্যবাদ.
ম্যাট বিনফোর্ড

28

আপনি স্ট্রিংয়ের শেষে এটি অ্যাঙ্কর করার চেষ্টা করতে পারেন, এরকম কিছু \\[^\\]*$। যদিও আমি নিশ্চিত নই যে কারও পক্ষে একেবারে রিজ এক্সপ্যাক্স ব্যবহার করতে হবে।


2
এটি আমার জন্য কাজ করে মহান। ([^\/]*)$লিনাক্স বাক্সের জন্য একটি পথে ফাইলের নামের সাথে মেলে। ^এই প্রসঙ্গে ক্যারেট কীভাবে কাজ করে তা আপনি ব্যাখ্যা করতে পারেন ? আমি এটি কেবল কখনও স্ট্রিংগুলির সূচনা করার জন্য ব্যবহার করেছি।
ব্র্যাড

@ ব্র্যাড, এটি অবহেলা। অর্থ [^\/]ব্যতীত যে কোনও চরিত্রের সাথে মেলে /
মাইকেল ক্রেলিন - হ্যাকার

9

এই রেজেক্স সম্পর্কে কি: \\[^\\]+$


ওয়েল আমি মনে করি না যে রেজিজেসে থাকা দরকার। তবে আমি আমার উত্তরটি সম্পাদনা করব
SERPRO

ত্রুটি ... আমার মনে হয় না এটি একেবারে রেইজেক্স হওয়া উচিত, তবে অবশ্যই ম্যাচের জন্য এটি অন্তর্ভুক্ত করা উচিত, এটি হওয়া উচিত Not এটি গুরুত্বপূর্ণ নয়, আমি আপনার উত্তরটি দেখার পরে কী ভুল হতে পারে তা ভেবে দেখেছি ডাউনভোটেড ছিল এবং এটিই আমি নিয়ে এসেছি, তাই আমি মন্তব্য করেছি।
মাইকেল ক্রেলিন - হ্যাকার

@ মাইকেল, আমাকে ভুল বলবেন না আমি আপনার মন্তব্যটির প্রশংসা করি, আমি কেবল ভেবেছিলাম এটি
রেজেেক্সে

5

আপনি যদি ব্যাকস্ল্যাশটি অন্তর্ভুক্ত করতে না চান তবে কেবল এটির পরে লেখাটি চেষ্টা করুন: ([^\\]+)$অথবা ইউনিক্সের জন্য:([^\/]+)$


2

ফলাফলটি পেতে আমি রেগেক্সের নীচে ব্যবহার করেছি যখন এটির দ্বারা শেষ হয় \

(\\[^\\]+)\\?$

[Regex Demo]

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