গ্রহন, নিয়মিত অভিব্যক্তি অনুসন্ধান এবং প্রতিস্থাপন


119

গ্রহের ক্ষেত্রে, নিয়মিত অভিব্যক্তি অনুসন্ধান সম্পাদন এবং প্রতিস্থাপন করার সময় কি প্রতিস্থাপন স্ট্রিংয়ের অংশ হিসাবে মিলে যাওয়া অনুসন্ধান স্ট্রিংটি ব্যবহার করা সম্ভব?

মূলত, আমি সমস্ত ঘটনাকে প্রতিস্থাপন করতে চাই

variableName.someMethod()

সঙ্গে:

((TypeName)variableName.someMethod())

যেখানে ভেরিয়েবল নামটি যে কোনও পরিবর্তনশীল নাম হতে পারে।

ইন sed আমি ভালো কিছু ব্যবহার করতে পারে:

s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g

অর্থাৎ & মিলেছে অনুসন্ধান স্ট্রিং প্রতিনিধিত্ব করে। গ্রহনেও কি তেমন কিছু আছে?

ধন্যবাদ!


অ্যাকলিপস রেজেক্সে ভাল ডকুমেন্টেশন: help.eclipse.org/kepler/…
ক্যানিয়ন

উত্তর:


225

হ্যাঁ, "()" একটি গোষ্ঠী ক্যাপচার করে। আপনি এটি আবার use i দিয়ে ব্যবহার করতে পারবেন যেখানে আমি ক্যাপচার গ্রুপ।

তাই:

অনুসন্ধান: (\w+\.someMethod\(\))

প্রতিস্থাপন করুন: ((TypeName)$1)

ইঙ্গিত: CTRL+ Spaceপাঠ্য বাক্সগুলিতে আপনাকে নিয়মিত প্রকাশের লেখার জন্য সমস্ত ধরণের পরামর্শ দেয়।


এটি একটি দুর্দান্ত উত্তর এবং একটি দরকারী ইঙ্গিত। এটিকে আরও কিছুটা বিশদে বর্ণিত হলে এটি আরও সহায়ক হত।
iammilind

ব্র্যাভো অ্যাকলিপস, আপনি এই বৈশিষ্ট্যটি সঠিকভাবে প্রয়োগ করেছেন!
কেনোগু ল্যাবজ

আমি বিশেষত "ইউনিকোড চরিত্রের জন্য হেক্স কোডের" উদাহরণটি পছন্দ করি :) :)
স্টিয়ার্ট মারি

আমি এমন কিছু কোড যুক্ত করতে চাই যা আমাকে সত্যই সহায়তা করেছিল। আমার প্রত্যেকের stringVar.equals("xxx")সাথে প্রতিস্থাপন করা দরকার "xxx".equals(stringVar)। আমি অনুসন্ধান / প্রতিস্থাপন কথোপকথনে নীচের রেজেক্স ব্যবহার করেছি: search: ([^()! ]+).equals\("(.*)"\), replace: "$2".equals\($1\)
লাডুড

আমার জন্য না. সর্বদা প্রথম গ্রুপটি প্রতিস্থাপন করে ...?
রাইটমায়ারম

6

ব্যবহার করে ...
অনুসন্ধান = (^। * আমদানি) (। *) (\ (। * \))
প্রতিস্থাপন = $ 1 $ 2

... প্রতিস্থাপন ...

from checks import checklist(_list):

...সঙ্গে...

from checks import checklist



রেজেক্সে থাকা ব্লকগুলি প্রথম বন্ধনী দ্বারা চিহ্নিত করা হয়েছে (যা "" not "এর আগে নয়)

(^। * আমদানি" "চেক আমদানি থেকে" খুঁজে বের করে এবং এটি $ 1 এ লোড করে (গ্রহপটি 1 এ গণনা শুরু করে

(। *) পরবর্তীটি সন্ধান করুন " সবকিছু "পর্যন্ত পরবর্তী সম্মুখীন" ( "এবং $ 2 লোড করুন। এ $ 2 স্টপ" ( "পরবর্তী অংশ কারণ (নীচে পরের লাইনে দেখুন)

প্রথম সম্মুখীন এ (\ (। * \) :) বলেছেন" "( "ব্লক starting 2 শুরু করার পরে ... ব্লক $ 2 বন্ধ করুন এবং $ 3 শুরু করুন $ 3" ​​('কোনও পাঠ্য') দিয়ে লোড হয়ে যায়: "বা, উদাহরণস্বরূপ," (_লিস্ট): "

তারপরে প্রতিস্থাপনের মধ্যে, কেবলমাত্র কেবলমাত্র প্রথম দুটি দিয়ে তিনটি ব্লককে প্রতিস্থাপন করতে $ 1 $ 2।



স্ক্রিনশট


3

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

অনুসন্ধান: (\ ডাব্লু + \। কিছু ম্যাথোদ \ (\))

প্রতিস্থাপন: ((TypeName) $ 1)

এখানে:

অনুসন্ধান:

  • প্রথম এবং শেষ '(' ')' রেগেক্সে একটি গোষ্ঠী চিত্রিত করে

  • '\ ডাব্লু' শব্দগুলিকে চিত্রিত করে (বর্ণানুক্রমিক + আন্ডারস্কোর)

  • '+' এক বা একাধিক চিত্রিত করে (যেমন এক বা একাধিক বর্ণানুক্রমিক + আন্ডারস্কোর)

  • '।' একটি বিশেষ চরিত্র যা কোনও চরিত্রকে চিত্রিত করে (যেমন। + এর অর্থ একটি বা একাধিক অক্ষর)। কারণ এটি একটি 'চিত্রিত করার জন্য একটি বিশেষ চরিত্র।' আমাদের এটির সাথে পালানোর চরিত্রটি দেওয়া উচিত, অর্থাৎ '' '

  • 'সামথমেথোদ' যেমনটি অনুসন্ধান করা হয় তেমন দেওয়া হয়।

  • দুটি বন্ধনী '(', ')' পালানোর চরিত্রের সাথে দেওয়া হয়েছে কারণ এগুলি একটি বিশেষ চরিত্র যা একটি গোষ্ঠী চিত্রিত করার জন্য ব্যবহৃত হয় (আমরা পরবর্তী পর্বে গ্রুপ সম্পর্কে আলোচনা করব)

প্রতিস্থাপন:

  • এটি ' ((টাইপনাম) $ 1) ' দেওয়া হয়, এখানে $ 1 গ্রুপটিকে চিত্রিত করে। অনুসন্ধান ক্ষেত্রের প্রথম এবং শেষ বন্ধনী '(', ')' এর মধ্যে আবদ্ধ সমস্ত অক্ষর

  • প্রতিস্থাপন বাক্সটি খুঁজে পেতে আপনি 'নিয়মিত প্রকাশ' বিকল্পটি পরীক্ষা করে দেখেছেন তা নিশ্চিত করুন

RegEx সম্পর্কে আরও তথ্য http://regexr.com/ এ পাওয়া যাবে ।


2

কমপক্ষে এসটিএস (স্প্রিংসোর্স টুল স্যুট) গ্রুপগুলি শুরুর ফর্ম 0 নম্বরযুক্ত, সুতরাং প্রতিস্থাপন স্ট্রিংটি হবে

replace: ((TypeName)$0)

5
এটি সত্য আফিক নয়। $ 0 পুরো মূল অনুসন্ধান শব্দটি উপস্থাপন করে। এই ক্ষেত্রে আমি অনুমান করি যে কাকতালীয়ভাবে কাজ করবে যদিও।
ওয়াল্টার হেক

0

এমন একটি ব্যক্তির জন্য যার একটি ব্যাখ্যা এবং একটিগ্রন্থে একটি রেজিপ্যাক্স কীভাবে ব্যবহার করতে হবে তার একটি উদাহরণ প্রয়োজন। সমস্যাটি বর্ণনা করার জন্য আমার উদাহরণ এখানে।

এখানে চিত্র বর্ণনা লিখুন

আমি নাম পরিবর্তন করতে চাই

/download.mp4^lecture_id=271

প্রতি

/271.mp4

এবং এর একাধিক হতে পারে।

এটি কিভাবে করা উচিত তা এখানে।

এখানে চিত্র বর্ণনা লিখুন

তারপরে সন্ধান করুন / প্রতিস্থাপন বোতামটি চাপুন

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