ভিজ্যুয়াল স্টুডিওতে মাল্টি-লাইন নিয়মিত প্রকাশ


87

একাধিক লাইন জুড়ে রিজেক্স প্রতিস্থাপনের জন্য ভিজ্যুয়াল স্টুডিও পাওয়ার কোনও উপায় আছে (ম্যাচটি ক্রস লাইনের সীমানাটি দেওয়া হোক)? আমি জানি যে আমি এর জন্য অনেকগুলি সম্পাদক ব্যবহার করতে পারি তবে এটি আশ্চর্যজনক বলে মনে হয় যে এই বৈশিষ্ট্যটি ভিজ্যুয়াল স্টুডিওর বাইরে চলে গেছে। আমি কিছু অনুপস্থিত করছি?

উত্তর:


24

ফাইল ডায়লগে প্রতিস্থাপন ব্যবহার করুন Ctrl- Shift- Hএবং একক লাইন বিকল্প (?s):

(?s)start.*end

খুঁজে

start
two
three
end

সিঙ্গললাইন অর্থ: প্রতিটি ফাইল একক লাইন হিসাবে বিবেচিত হয়, বিন্দু .নতুন লাইনের সাথে মেলে \n। ডাউনসাইড: আপনাকে অবশ্যই সমস্ত অনুসন্ধান করুন এবং সমস্ত প্রতিস্থাপন করতে হবে, বা হাত দ্বারা প্রতিস্থাপন করতে হবে। পরবর্তী কাজ করে না।

মোডাল নয় এমন কথোপকথনের জন্য Ctrl- Hএবং পরবর্তী সন্ধান করুন, যে (.*\n)*কোনও সংখ্যক লাইনের সাথে মেলে ব্যবহার করুন :

start(.*\n)*.*end

যে কোনও উপায়ে, আপনি নিজের অনুসন্ধানগুলি একাধিক লাইন সন্নিবেশ করে প্রতিস্থাপন করতে পারেন \n


এটি কাজ করে তবে আপনি অতিরিক্ত প্রশ্ন চিহ্ন চান (আগে end) সুতরাং এটি লোভী নয়। যেমন:start(.*\n)*.*?end
সিএডি

4
লোভী সংস্করণ startএবং এর মধ্যে যতগুলি সম্ভব চরিত্রের সাথে মেলে end। আপনি যদি পরেরটি সন্ধান endকরতে চান তবে অ-লোভী সংস্করণটি ব্যবহার করুন: (?s)start.*?endবা start(.*\n)*?.*?end
স্টিফান স্ট্যাম

ব্যবহারকারীদের জন্য নোট: ভিজ্যুয়াল স্টুডিও ২০১৩ সাল থেকে কাজ করে না G গাইলস রবার্টসের উত্তর দেখুন।
অপেক্ষাকৃত_রেন্ডম

@ রিলেটিভলি_আর্যান্ডম: আপনার ব্যবহার করতে সমস্যা হয়েছে (?s)?
স্টিফান স্ট্যাম

হ্যা, আমি করেছিলাম. এটি এখনও নতুন ভিএস সংস্করণগুলিতে আপনার জন্য কাজ করে?
অপেক্ষাকৃত_রেন্ডম

72

নিয়মিত প্রকাশগুলি ভিজ্যুয়াল স্টুডিও 2013-এ পরিবর্তিত হয়েছে । https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx

দুটি লাইনের সাথে একটি অভিব্যক্তি মেলে কোডটি এখন হবে:

StartOfExpression.*\r?\n.*EndOfExpression


ধন্যবাদ, এটি নিখুঁতভাবে কাজ করে, </label>.*\r?\n.*<divযেখানে \r?\nস্পষ্টভাবে ক্যারেজ_রেট-নতুন_লাইন এবং .*সম্ভাব্য ট্যাব / স্পেসগুলির সাথে ম্যাচ করার জন্য
স্যাম

আমি ত্রুটি পেয়েছি "লিটারাল '\ n' বর্তমানে সমর্থিত নয়"
ELI7VH

@ ELI7VH আমি আপনার ত্রুটিটি প্রতিলিপি করতে পারি না। ভিজ্যুয়াল স্টুডিওর কোন সংস্করণ আপনি ব্যবহার করছেন?
গিলস রবার্টস

25

এটি আজ ভিজ্যুয়াল স্টুডিও 2012 এ কাজ করে:

fooPatternToStart.*(.*\n)+?.*barPatternToEnd

(.*\n)+?অংশটি কীভাবে একাধিক লাইন জুড়ে মেলে না, লোভী।
fooPatternToStartআপনার স্টার্ট লাইনে কিছু রেজেক্স প্যাটার্ন barPatternToEndহ'ল, নীচে অন্য লাইনে সন্ধান করার জন্য আপনার প্যাটার্নটি হ'ল সম্ভবত নীচে অনেকগুলি লাইন ...

উদাহরণ এখানে পাওয়া যায় ।

সহজ এবং কার্যকর :)

দ্রষ্টব্য: VS2012 এর আগে , কাজ করা প্যাটার্নটি ছিল:fooPatternToStart.(.\n)+@.*barPatternToEnd


4
নোট ভিজ্যুয়াল স্টুডিও 2012 কোডের মধ্যে যেমন সন্ধান / প্রতিস্থাপনের জন্য একই রেজেক্স ইঞ্জিন ব্যবহার করে, তাই উপরেরটি হয়ে যায়: fooPatternToStart। * (। * \ n) *?। * বারপ্যাটারনটো
ব্রেন্ট

@ ব্রেন্ট: মঞ্জুর হয়েছে, ভিএসটিওর সাম্প্রতিক সংস্করণগুলি এই সমস্যাটিকে স্থির করেছে।
ওহু

আমি যদি বিশেষভাবে শুরু এবং থামার মাঝে কোনও পাঠ্য অনুসন্ধান করতে চাই তবে কী হবে? এটার মত? : সম্পাদনা করুন: এবং এর মধ্যে ধন্যবাদ sprintf.*(.*\n)+?.*log.*(.*\n)+?.*__func__অনুসন্ধান করার জন্য কাজ করে ! থো .. মনে হচ্ছে এটি অনন্তের দিকে নজর রাখবে .. যদি কেবলমাত্র লাইনের পরিমাণ সীমিত করার উপায় ছিলlogsprintf__func__
গিজমো

19

দ্রষ্টব্য: এই উত্তরটি ভিজুয়াল স্টুডিওতে ব্যবহৃত ভিজে 2012 পর্যন্ত এবং রেজিেক্স সিনট্যাক্সটি ব্যবহার করছে V ভিএস 2013 এবং তারপরে, রেজেক্স সিনট্যাক্সটি পরিবর্তিত হয়েছে।

আপনি \nএক্সপ্রেশন অন্তর্ভুক্ত করতে পারেন । উদাহরণস্বরূপ, এখানে একটি রেইজেক্স রয়েছে যা আমি সংরক্ষণ করা পদ্ধতি নয় এমন কোনও জিনিস থেকে স্বয়ংক্রিয়ভাবে উত্পাদিত এসকিউএল স্ক্রিপ্টগুলিকে "পরিষ্কার" করতে ব্যবহার করি (এটি পাঠ্য ব্লকের সাথে মিলবে যা "অবজেক্ট:" ধারণকারী একটি লাইন দিয়ে শুরু করবে যা তারপরে নেই যা কিছু নয় "সঞ্চিতপ্রসারণ", তারপরে নিম্নলিখিত লাইনের সাথে একটি লাইনের সাথে মিলে "GO" শব্দটি অন্তর্ভুক্ত):

/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\n

দ্রষ্টব্য: লাইন টার্মিনেটর ফাইলের ফর্ম্যাটের উপর নির্ভর করে, সুতরাং কেবল ইউনিক্স স্টাইলের পাঠ্যের জন্য, n, ম্যাক শৈলী পাঠ্যের জন্য \ r, বা উইন্ডো স্টাইল পাঠ্যের জন্য \ r \ n ব্যবহার করুন।
জেমস উইলকিন্স

4
দ্রষ্টব্য II: আপনি একই সাথে টিক চিহ্ন দেওয়া "পুরো শব্দটি মিলিয়েছেন না" তা নিশ্চিত করুন, অন্যথায় এটি কার্যকর হয় না!
এড গ্রাহাম

4
আপনি কি এই মন্তব্যটি যুক্ত করতে পারেন যে এই উত্তরটি কেবলমাত্র ভিজ্যুয়াল স্টুডিও 2012 এবং প্রবীণদের ক্ষেত্রে প্রযোজ্য?
গাইলস রবার্টস

3

আপনার প্রকাশের শেষে আপনাকে you r \ n ব্যবহার করতে হবে।


1

অ-লোভী মাল্টি-লাইন কোনও চরিত্র ক্যাপচার, ভিজ্যুয়াল স্টুডিও 2013+:

.*?\r?\n.*?

গাইলস রবার্টসের উত্তরে লোভী সংস্করণ।


0

ভিএস কোড অনুসন্ধান করার সময় এখানে প্রত্যেকের জন্য, আমি script2 টি নিউলাইন (নিউলাইনগুলি বাদ দেওয়া) এর সাথে যে কোনও জায়গা থেকে যে কোনও জায়গায় মেলে এই ব্যবহার করি :

script(.|\n)+?(?=\n\n)

প্রতিস্থাপন করুন scriptএবং \n\nতাদের মধ্যে সমস্ত কিছু মেলে।

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