কোন রেজেক্স 'চিহ্ন থেকে একটি লাইনের শেষ পর্যন্ত সমস্ত কিছু ক্যাপচার করবে?


122

আমার কাছে একটি পাঠ্য ফাইল রয়েছে যা একটি এককের সাথে মন্তব্যকে বোঝায় '

কিছু লাইনের দুটি উদ্ধৃতি রয়েছে তবে আমার প্রথম 'এবং লাইনের ফিডের সমস্ত কিছু পাওয়া দরকার।

I AL01                  ' A-LINE                            '091398 GDK 33394178    
         402922 0831850 '                                   '091398 GDK 33394179    
I AL02                  ' A-LINE                            '091398 GDK 33394180    
         400722 0833118 '                                   '091398 GDK 33394181    
I A10A                  ' A-LINE 102                       '  53198 DJ  33394182    
         395335 0832203 '                                  '  53198 DJ  33394183    
I A10B                  ' A-LINE 102                       '  53198 DJ  3339418

উত্তর:



90

উপযুক্ত রেজেক্সটি 'চারটি অনুসরণ করে যেকোন সংখ্যক অক্ষর [শূন্য অক্ষর সহ] স্ট্রিং / লাইন টোকেনের সমাপ্তি দিয়ে শেষ হবে:

'.*$

এবং যদি আপনি 'চরের পরে সবকিছু ক্যাপচার করতে চান তবে এটি আউটপুটে অন্তর্ভুক্ত না করেন তবে আপনি ব্যবহার করতে পারেন:

(?<=').*$

এটি মূলত বলেছে আমাকে লাইন শেষ না হওয়া অবধি 'চরটিকে অনুসরণ করে' এমন সমস্ত চরিত্র দিন।

সম্পাদনা করুন : এটি উল্লেখ করা হয়েছে যে using ব্যবহারের সময় অন্তর্নিহিত * * এবং তাই কঠোরভাবে প্রয়োজন হয় না, তাই প্যাটার্ন:

'.* 

প্রযুক্তিগতভাবে সঠিক, তবে এটি নির্দিষ্ট হওয়া এবং পরবর্তী কোড রক্ষণাবেক্ষণের জন্য বিভ্রান্তি এড়াতে আরও স্পষ্ট, সুতরাং আমার use এর ব্যবহার $ এটা আমার বিশ্বাস যে স্পষ্টতাই প্রশ্নবিদ্ধ হতে পারে এমন পরিস্থিতিতে নিখুঁত আচরণের উপর নির্ভর করার চেয়ে সুস্পষ্ট আচরণের ঘোষণা দেওয়া ভাল।


1
$ অপ্রয়োজনীয়। ডটটি স্বাভাবিক পরিস্থিতিতে লাইনের শেষে থামবে।
তোমালাক

7
অপ্রয়োজনীয় - তবে তিনি যা করতে চান তার জন্য উপযুক্ত। এটি পরবর্তীতে একটি অনুস্মারক হিসাবে কাজ করে যে এটি 'লাইনের শেষ
অবধি

@ বালাবাস্টার: আমি বলিনি যে এটি ভুল ছিল। ;-) এটি কেবল একটি পাদটীকা ছিল।
টমলাক

@ তোমালাক: আপনি যে কোনও উপায়ে ভুল ছিলেন তা বোঝানোর চেষ্টা করছিলেন না, কেবল আমার ব্যবহার-পছন্দ করার কারণে আমার যুক্তিটি স্পষ্ট করে দিচ্ছিলেন $ না করে। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
বেনআলাবাস্টার

প্রশ্নটিতে চরিত্রের পরে সবকিছুকে কীভাবে অন্তর্ভুক্ত করা যায় তার পরিবর্তে এটি অন্তর্ভুক্ত করার জন্য +1।
গ্রিজাসড

22
'.*$

একক উদ্ধৃতি ( ') দিয়ে শুরু করে, লাইন ( ) এর শেষ না হওয়া অবধি যেকোন অক্ষরের ( .) শূন্য বা আরও বেশি বার ( *) মেলাবেন $


এই উত্তরটি কীভাবে একটি আদেশ, সুন্দর এবং পরিষ্কারের পিছনে যুক্তি ভাঙতে পারে তার একটি দুর্দান্ত উদাহরণ!
টিমমাহ

12

আমি যখন উইন্ডোতে '। * চেষ্টা করেছি (নোটপ্যাড ++) এটি সর্বশেষ লাইনের শেষ অবধি' পরে সমস্ত কিছু মিলে যাবে।

এই লাইনের শেষ অবধি সমস্ত কিছু ক্যাপচার করতে আমি নিম্নলিখিতটি টাইপ করেছি:

'.*?\n

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


6

আপনার উদাহরণে আমি নিম্নলিখিত প্যাটার্নের জন্য যেতে চাই:

'([^\n]+)$

সমস্ত উপস্থিতি মেলে মাল্টলাইন এবং গ্লোবাল বিকল্প ব্যবহার করুন।

ম্যাচটিতে লাইনফিডটি অন্তর্ভুক্ত করতে আপনি ব্যবহার করতে পারেন:

'[^\n]+\n

তবে এতে লাইনফিড না থাকলে এটি শেষ পংক্তিটি মিস করতে পারে।

একটি লাইনের জন্য, আপনার যদি লাইনফিডের সাথে মেলে না প্রয়োজন হয় তবে আমি পছন্দ করতে চাই:

'[^$]+$

4

এটি 'ব্যাকেরেফারেন্স ইন 1 - এবং' ব্যাকেরেফারেন্স ইন 2'র পরে সমস্ত কিছু ক্যাপচার করবে 2 ভাষার উপর নির্ভর করে আপনাকে এস্টোস্ট্রোফ থেকে বাঁচতে হতে পারে () ')

/^([^']*)'?(.*)$/

দ্রুত পরিবর্তন: যদি লাইনের কোনও '- backreferences 1 না থাকে তবে এখনও পুরো লাইনটি ধরা উচিত।

^ - start of string
([^']*) - capture any number of not ' characters
'? - match the ' 0 or 1 time
(.*) - capture any number of characters
$ - end of string

0

https://regex101.com/r/Jjc2xR/1

/(\w*\(Hex\): w*)(.*?)(?= |$)/gm

আমি নিশ্চিত যে এটির একটি কাজ করে, এটি খারাপভাবে কাঠামোগত পাঠ্য মাল্টিলিনড বেলোতে ডি হেক্সা সিরিয়াল ক্যাপচার করবে

     Space Reservation: disabled
         Serial Number: wCVt1]IlvQWv
   Serial Number (Hex): 77435674315d496c76515776
               Comment: new comment

আমি রেজেক্সে চিরন্তন নবাগত কিন্তু আমি এটির ব্যাখ্যা দেওয়ার চেষ্টা করব

(\ ডাব্লু * (হেক্স): ডাব্লু *): স্ট্রিংয়ে "হেক্স:" রয়েছে এমন রেখায় পাঠ্য সন্ধান করুন

(। *?) এটি দ্বিতীয় গৃহীত পাঠ্য এবং এরপরে যা কিছু আছে তার অর্থ

(? = | $) এমন একটি সীমা তৈরি করুন যা = এবং | এর মধ্যে স্থান

সুতরাং দ্বিতীয় গ্রুপের সাথে আপনার মান হবে


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