ভিএসকোড রেইজেক্স সাবম্যাচ ম্যাথ আবিষ্কার এবং প্রতিস্থাপন করবেন?


204
%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@

প্রতিটি মিলে যাওয়া আইডি থেকে একটি ধ্রুবক বিয়োগ করতে আমি এই রেজেক্স অনুসন্ধানটি এবং ভিএম-তে কমান্ড প্রতিস্থাপন করছি।

আমি ভিজেডে রিজেেক্সটি খুঁজে পেতে পারি তবে আমি কীভাবে submatchগণিতগুলির জন্য রেফারেন্স এবং প্রতিস্থাপন করতে পারি ? submatch(1)ভিএসকোডে কাজ করে না?

ধন্যবাদ।

উত্তর:


343

আপনার নিয়মিত প্রকাশের (foobar)ফলে প্রথম গ্রুপটিকে ব্যবহার করে রেফারেন্স দিতে পারেন $1এবং যদি আপনার প্রতিস্থাপন ইনপুট ক্ষেত্রে আরও গ্রুপ থাকে।


এখানে আবার আলাদাভাবে জিজ্ঞাসা করা হয়েছে: stackoverflow.com/questions/35283300/…
রক্কা রাগ

4
আমি প্রতিস্থাপন করতে ছিল <p>(.*)</p>সঙ্গে <p>\n\t\t\t\t\t\t$1\n\t\t\t\t\t</p>একটি 2000 লাইন ফাইলের জন্য। আমাকে নিজেই এটি কল্পনা করুন।
বিশ্ব মিশ্র

99

একটি উদাহরণ সহ বেঞ্জামিনের উত্তরকে বাড়িয়ে তুলতে:

Find        Carrots(With)Dip(Are)Yummy
Replace     Bananas$1Mustard$2Gross
Result      BananasWithMustardAreGross

প্রথম বন্ধনীর যে কোনও কিছুই নিয়মিত প্রকাশ হতে পারে।


এইটি আমাকে স্মরণ করিয়ে দিয়েছিল যে যদি আমি যদি বিবৃতিতে একটি রেইজেক্স করি তবে আমার প্রথম বন্ধনী থেকে রক্ষা পাওয়া উচিত।
ক্লকওয়ার্ক

65

শুধু অন্য উদাহরণ যুক্ত করতে:

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

আমি ইমেজটিতে ফাইন্ড + রিপ্লেস টুল (সিটিআরএল + এইচ) ব্যবহার করেছি: খুঁজুন ও প্রতিস্থাপন করুন


8
আমার জন্য এটি অসঙ্গতিপূর্ণভাবে কাজ করে - যদিও নির্বাচনের কাঁটাচামচ সঠিক হয় তবে আউটপুটটি কখনও কখনও $1প্রতিস্থাপন ছাড়াই রাখে
Godblessstrawberry

1
হাই, @ গুডব্লেসস্ট্রোবেরি, আপনি কি নিজের অনুসন্ধান এবং প্রতিস্থাপনের স্ট্রিংগুলি ভাগ করতে পারেন?
ডায়োগো পাসকোয়াল

2
হাই @Diogo আমি projectwide প্রতিস্থাপন করার চেষ্টা ছিল \[innerHtml\]\s*=\s*"'(.*)'\s*\|\s*translate\s*"সঙ্গে myTranslate="$1"এবং এটি কী এলোমেলোভাবে কুঁদন হয় এবং $ 1 পরিবর্তে গ্রুপ মান কখনও কখনও ঢোকাতে। 1.28.0 আপডেট করুন এই সমস্যা সমাধান
godblessstrawberry

আমি @godblessstrawberry এর মতো একই সমস্যায় পড়েছি, আমার সমস্ত ফাইলকে রেজেক্স '(এবং | বা or + | \ -) ​​\ n (*)' এবং প্রতিস্থাপনের স্ট্রিংটি '\ n $ 2 $ 1' এর সাথে মাঝে মাঝে সঠিকভাবে প্রতিস্থাপন করেছি বাইনারি অপারেটরটিকে নতুন লাইনের শুরুতে স্থানান্তরিত করে তবে অন্যান্য ক্ষেত্রে সবেমাত্র $ 2 $ 1 .োকানো হয়। ভিএসকোডিয়ামে একটি বাগ হিসাবে উপস্থিত হবে
টম বন্ধ

@godblessstrawberry, এটি পরীক্ষা করুন: github.com/microsoft/vscode/issues/81825 । যদি এটি আপনার জন্য প্রয়োগ না হয় তবে আরও তথ্য সরবরাহ করুন এবং সেখানে একটি সমস্যা খুলুন open
ডায়োগো পাসচোয়াল

9

আমার ক্ষেত্রে $ 1 কাজ করছে না, তবে purpose 0 আমার উদ্দেশ্যে কাজ করে।

এই ক্ষেত্রে আমি লারাভেলে তাদের অনুবাদ করার জন্য স্ট্রিংগুলি সঠিক বিন্যাসের সাথে প্রতিস্থাপন করার চেষ্টা করছিলাম, আমি আশা করি এটি অন্য কারও পক্ষে কার্যকর হতে পারে কারণ এটি সাজানোর জন্য আমার কিছুটা সময় লেগেছে!

Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}

লারাভেল ট্রান্সলেশনের জন্য রেজেেক্স স্ট্রিং প্রতিস্থাপন করুন


1
আপনি কি আপনার সম্পাদনাটি নিজের পোস্ট এবং অনুলিপিটির পরিবর্তে কোডটি অনুলিপি করতে পারবেন? ভিজ্যুয়ালাইজেশনের জন্য এটি আরও ভাল হবে।
প্যাঙ্কউড

3

নতুনদের জন্য, গৃহীত উত্তরটি সঠিক, তবে আপনি যদি ভিএসসি বা রেজেক্সের সাথে তেমন পরিচিত না হন তবে কিছুটা ক্ষুদ্র।

সুতরাং, যদি হয় তবে এটির সাথে আপনার প্রথম যোগাযোগ:

পাঠ্যটি সন্ধান এবং সংশোধন করতে ,

  1. "সন্ধান করুন" পদক্ষেপে, আপনি "ক্যাপচারিং গ্রুপগুলি", উদাহরণস্বরূপ I want to find (group1) and (group2), প্রথম বন্ধনী ব্যবহার করে রেজেক্স ব্যবহার করতে পারেন । এটি একই পাঠ্যটি খুঁজে পেতে I want to find group1 and group2পারে তবে আপনি তারপরে group1এবং group2পরবর্তী পদক্ষেপে উল্লেখ করতে পারেন এমন পার্থক্য সহ :

  2. "প্রতিস্থাপন করুন" পদক্ষেপে, আপনি মাধ্যমে ক্যাপচারিং গ্রুপ পাঠাতে পারেন $1, $2ইত্যাদি যাতে আপনাকে বাক্য পরিবর্তন হতে পারে I found $1 and $2 having a picnic, যা আউটপুট wouldI found group1 and group2 having a picnic.

মন্তব্য:

  • কেবল একটি স্ট্রিংয়ের পরিবর্তে, এর অভ্যন্তরে বা বাইরে যে কোনও কিছু ()নিয়মিত প্রকাশ হতে পারে।

  • $0 পুরো ম্যাচ বোঝায়


2

আর একটি সহজ উদাহরণ:

Search: style="(.+?)"
Replace: css={css`$1`}

এইচটিএমএলকে আবেগ / সিএসএসের সাথে জেএসএক্স রূপান্তর করার জন্য দরকারী!

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