একটি নিয়মিত অভিব্যক্তিতে একটি ফরোয়ার্ড স্ল্যাশ ছেড়ে যাওয়া


106

আমার প্রশ্নটি একটি সাধারণ প্রশ্ন এবং এটি নিয়মিত প্রকাশ প্রকাশের বিষয়ে about আপনার কি /নিয়মিত প্রকাশে ফরোয়ার্ড স্ল্যাশ থেকে বাঁচতে হবে ? এবং আপনি কিভাবে এটি করতে যেতে হবে?


1
আপনি কোন ভাষা / নিয়মিত প্রকাশের প্রয়োগ ব্যবহার করেন?
গম্বো

আকর্ষণীয় যথেষ্ট, আমি জাভাস্ক্রিপ্টের জন্য এই প্রশ্নের সন্ধান করছিলাম। কিন্তু তখন আমার আইডিই বলেছিল যে আমি একটি অপ্রয়োজনীয় পালাবার ব্যবহার করছি। তাই myStr.replace(/[/:.-]+/gi, '_')আমার বিস্ময় বৈধ। আমি ভেবেছিলাম আমার দরকার হবে /[\/:.-]+/gi। আমি সিদ্ধান্ত নিতে পারছি না যে এটি দুর্দান্ত বা বিভ্রান্তিকর।
টার্বো

উত্তর:


90

কি প্রসঙ্গ / ভাষা? কিছু ভাষা /নিদর্শন ডিলিমিটার হিসাবে ব্যবহার করে , তাই হ্যাঁ, আপনার কোন ভাষা / প্রসঙ্গের উপর নির্ভর করে এড়াতে হবে। আপনি এটির সামনে একটি পশ্চাদপদ স্ল্যাশ রেখে এড়াতে পারেন: \/কিছু ভাষার জন্য (পিএইচপি এর মতো) আপনি অন্য অক্ষরগুলি ডিলিমিটার হিসাবে ব্যবহার করতে পারেন এবং সুতরাং আপনাকে এড়াতে হবে না। তবে এএফাইক সকল ভাষায়, কেবলমাত্র বিশেষ তাত্পর্য /হ'ল এটি হ'ল মনোনীত প্যাটার্ন সীমানাঙ্ক।


38

এখানে কয়েকটি বিকল্প রয়েছে:

  • পার্লে, আপনি বিকল্প সীমানা চয়ন করতে পারেন। আপনি সীমাবদ্ধ করছি না m//। আপনি যেমন অন্য একটি চয়ন করতে পারেন m{}। তাহলে পালাবার দরকার নেই। প্রকৃতপক্ষে, "পার্ল সেরা অভ্যাসগুলি" -তে ডামিয়ান কনওয়ে দৃser়ভাবে দাবি করে যে m{}এটিই একমাত্র বিকল্প ডিলিমিটার যা ব্যবহার করা উচিত এবং এটি পার্ল :: সমালোচক (সিপিএএন) দ্বারা আরও জোরদার করা হয়েছে। আপনি বিভিন্ন বিকল্প ডিলিমিটার অক্ষর ব্যবহার করে দূরে সরে যেতে পারেন //এবং {}পরবর্তীকালে সিদ্ধান্তটি বোঝার ক্ষেত্রে সবচেয়ে পরিষ্কার বলে মনে হয়। যাইহোক, যদি এই পছন্দগুলির মধ্যে দুটির ফলে খুব বেশি পলায়নের ফলাফল হয় তবে যাকে যিনি নিজেকে যোগ্যতার পক্ষে সবচেয়ে ভাল দেন তা চয়ন করুন। প্রচলিত উদাহরণ m(...), m[...]এবং m!...!

  • আপনি m/\/[^/]+$/যেভাবে বিকল্প ডিলিমিটারগুলি ব্যবহার করতে বা না পছন্দ করতে পারেন সেখানে আপনি ব্যাকস্ল্যাশ সহ ফরোয়ার্ড স্ল্যাশগুলি এড়াতে পারবেন: উদাহরণস্বরূপ (বিকল্প সীমানা যা হয়ে উঠতে পারে m{/[^/]+$}, যা আরও স্পষ্টভাবে পড়তে পারে) ব্যবহার করে। একটি নাম এবং একটি উইকিপিডিয়া পৃষ্ঠা অর্জন করার জন্য ব্যাকস্ল্যাশ সহ স্ল্যাশ ছেড়ে যাওয়া যথেষ্ট সাধারণ: ঝোঁক টুথপিক সিন্ড্রোম । নিয়মিত অভিব্যক্তিগুলিতে যেখানে কেবলমাত্র একটি উদাহরণ রয়েছে, স্ল্যাশ থেকে রক্ষা পাওয়া আইনসম্মততার অন্তরায় হিসাবে বিবেচিত হওয়ার মাত্রায় নাও উঠতে পারে, তবে এটি যদি হাতছাড়া হতে শুরু করে, এবং যদি আপনার ভাষা পার্লের মতো বিকল্প সীমানা ছাড়ার অনুমতি দেয় তবে তা হবে পছন্দসই সমাধান হতে।


1
আপনি কি একটি উদাহরণ দিতে পারেন? আমার কাছে এটি রয়েছে: perl -pi -e "s/chdir .*/chdir $ROBOT_PATH/g" startup_scripts/supervisord.confএবং আমি ফরোয়ার্ড স্ল্যাশগুলির সাথে দ্বন্দ্ব পাচ্ছি।
সিএমসিডিগ্রাগনকাই

নোট করুন যে আপনি নিয়মিত প্রকাশের সাথে প্রতিস্থাপন (ওরফে বিকল্প) করার সময় sএকটি ব্যবহার করেন না mperlfect.com/articles/regex.shtml
মাশমাগার

2
@ সিএমসিডিগ্রাগনকাই perl -pi -e "s{chdir .*}{chdir $ROBOT_PATH}g" startup_scripts/supervisord.conf... তবে এটি সম্ভবত আরও ভাল: perl -pi -e 's/chdir .*/chdir $ENV{ROBOT_PATH}/g' startup_scripts/supervisord.confকারণ এটি শেল ফাঁকে এড়ানো যায় ids
ডেভিডো

1
আক্ষরিক /চরিত্র থেকে বেরিয়ে আসার একটি বিকল্প হেক্স বা অষ্টাল মধ্যে তার ASCII এনকোডিং দ্বারা একটি চরিত্র নির্দিষ্ট করার রেগেক্স কার্যকারিতা ব্যবহার করা হয়। পার্ল অষ্টাল ফর্মটি গ্রহণ করে \57(উত্স নিয়মিত- এক্সপ্রেসন.ইনফো / রেফচার্যাকার্স.চ.টি.এম.এল )
লুক্কায়িত

লিউকুয়েসার দ্বারা লিঙ্ক করা পৃষ্ঠায় (আপনাকে ধন্যবাদ) এছাড়াও এস্কেপ সিকোয়েন্স \ কিউ ... \ ই রয়েছে। এটি আমার পক্ষে কাজ করেছে।
ব্যবহারকারী 3012857

11

ব্যাকস্ল্যাশ ব্যবহার করুন \বা একটি আলাদা ডিলিমিটার বেছে নিন, অর্থাত্ "পার্লের m#.\d#পরিবর্তে /.\d/, আপনি / রেগুলার এক্সপ্রেশন ডিলিমিটারটিকে অন্য কোনও বিশেষ চরিত্রে পরিবর্তন করতে পারেন যদি আপনি অক্ষরটি এম (ম্যাচের জন্য) দিয়ে চালিয়ে যান;"


6

যদি ডিলিমিটারটি হয়, আপনার পালাতে হবে।


0

আপনি যদি সি # ব্যবহার করছেন তবে আপনার এড়াতে হবে না।


হতে পারে, তবে এখানে তারা পার্ল ব্যবহার করছে।
টোটো

0

জাভা জন্য, আপনার প্রয়োজন হবে না।

eg: "^(.*)/\\*LOG:(\\d+)\\*/(.*)$" ==> ^(.*)/\*LOG:(\d+)\*/(.*)$

যদি আপনি \ সামনে / রাখেন। আইডিই আপনাকে "রিজিডেন্ট চরিত্রের পালা" "Re /" রেজিএক্সে "বলবে

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