আমার রুবিতে আমার নিয়মিত প্রকাশের জন্য একটি স্ট্রিংয়ের মানটি প্রতিস্থাপন করতে হবে। এটি করার কোনও সহজ উপায় আছে? উদাহরণ স্বরূপ:
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
if goo =~ /value of foo here dynamically/
puts "success!"
end
আমার রুবিতে আমার নিয়মিত প্রকাশের জন্য একটি স্ট্রিংয়ের মানটি প্রতিস্থাপন করতে হবে। এটি করার কোনও সহজ উপায় আছে? উদাহরণ স্বরূপ:
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
if goo =~ /value of foo here dynamically/
puts "success!"
end
উত্তর:
স্ট্রিং সন্নিবেশ হিসাবে একই।
if goo =~ /#{Regexp.quote(foo)}/
#...
মনে রাখবেন যে, Regexp.quoteএ জন এল এর উত্তর গুরুত্বপূর্ণ!
if goo =~ /#{Regexp.quote(foo)}/
আপনি যদি কেবল "সুস্পষ্ট" সংস্করণটি করেন:
if goo =~ /#{foo}/
তারপরে আপনার ম্যাচের পাঠ্যের সময়সীমাগুলি রিজেক্সএক্স ওয়াইল্ডকার্ড হিসাবে বিবেচিত "0.0.0.0"হবে এবং মিলবে "0a0b0c0"।
আরও মনে রাখবেন যে আপনি যদি সত্যিই কেবল একটি স্ট্রিং ম্যাচ পরীক্ষা করতে চান তবে আপনি কেবল এটি করতে পারেন
if goo.include?(foo)
যার জন্য অতিরিক্ত অক্ষরগুলির জন্য অতিরিক্ত উদ্ধৃতি বা উদ্বেগের প্রয়োজন নেই।
.quote()আপনি যদি স্ট্রিংটি ব্যবহার করে একটি রেজেক্স তৈরি করতে চান তবে বিপরীতটি (ব্যবহার না করা )ও কার্যকর হতে পারে।
if goo.include?(foo)অস্তিত্বের জন্য যাচাই করতে আগ্রহী যখন আপনি" => সত্য করতে পারেন । আপনি যদি স্ট্রিং.গ্র্যাশ প্রতিস্থাপন এবং ইতিমধ্যে ব্যবহার করতে আগ্রহী হন, তবে Regexp.quote আপনার একমাত্র বিকল্প হতে পারে।
Regexp.newবা Regexp.compile।
Regexp.compile(Regexp.escape(foo))
Regexp.new ব্যবহার করুন:
if goo =~ Regexp.new(foo) # Evaluates to /0.0.0.0/
এখানে একটি সীমিত তবে দরকারী অন্যান্য উত্তর:
আমি আবিষ্কার করেছি যে আমি কেবলমাত্র আমার ইনপুট স্ট্রিংয়ে একক উদ্ধৃতি ব্যবহার করেছি: Regexp.quote বা Regexp.escape ব্যবহার না করে খুব সহজেই আমি একটি রেইগেক্সে sertোকাতে পারি: (একটি আইপি ঠিকানা মিল)
IP_REGEX = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
my_str = "192.0.89.234 blahblah text 1.2, 1.4" # get the first ssh key
# replace the ip, for demonstration
my_str.gsub!(/#{IP_REGEX}/,"192.0.2.0")
puts my_str # "192.0.2.0 blahblah text 1.2, 1.4"
একক উদ্ধৃতি কেবল \\ এবং \ 'ব্যাখ্যা করে।
http://en.wikibooks.org/wiki/Ruby_Programming/Strings#Single_quotes
এটি আমাকে সাহায্য করেছিল যখন আমাকে বহুবার রেইজেক্সের একই দীর্ঘ অংশটি ব্যবহার করার প্রয়োজন হয়েছিল। সর্বজনীন নয়, তবে প্রশ্নের উদাহরণের সাথে খাপ খায়, আমি বিশ্বাস করি।
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
puts "success!" if goo =~ /#{foo}/