সাব্লাইম টেক্সট 2 এ নিয়মিত অভিব্যক্তি অনুসন্ধান প্রতিস্থাপন করুন


440

আমি সর্বোচ্চ টেক্সট 2. রেগুলার এক্সপ্রেশনের প্রতিস্থাপন অনুসন্ধান করতে দেখছি এই ডকুমেন্টেশন বরং রক্তহীন হয়। বিশেষত, আমি গ্রুপগুলিতে একটি প্রতিস্থাপন করতে চাই, তাই এই পাঠ্যটিকে রূপান্তর করার মতো কিছু:

Hello my name is bob

এবং এই অনুসন্ধান শব্দ:

কি সন্ধান করুন: my name is (\w)+

প্রতিস্থাপন: my name used to be $(1)

অনুসন্ধান শব্দটি ঠিকঠাকভাবে কাজ করে তবে আমি রিজেএক্সএক্স গ্রুপটি ব্যবহার করে কোনও প্রতিস্থাপন করার উপায় খুঁজে পাচ্ছি না।

উত্তর:


584

প্রথম ক্যাপচার গ্রুপের (প্রথম বন্ধনীতে প্রথম প্যাটার্ন) প্রথমবারের জন্য একটি ব্যাক-রেফারেন্স হয় $1বা \1(ব্যাকস্ল্যাশ এক) হয় এবং প্রকৃতপক্ষে সাব্লাইম উভয় বাক্য গঠনকে সমর্থন করে। সুতরাং চেষ্টা কর:

my name used to be \1

অথবা

my name used to be $1

আপনার মূল ক্যাপচার প্যাটার্নটিও নোট করুন:

my name is (\w)+

ভুল এবং পুরো নামের চেয়ে কেবল নামের চূড়ান্ত অক্ষরটি ক্যাপচার করবে। নামের সমস্ত অক্ষর ক্যাপচার জন্য আপনার নিম্নলিখিত প্যাটার্নটি ব্যবহার করা উচিত:

my name is (\w+)

15
বাদে, তাই না $0?
স্কাইলার সেভল্যান্ড

11
না, regular 0 একটি নিয়মিত অভিব্যক্তিতে ব্যাক-রেফারেন্স হিসাবে ব্যবহৃত হয় না (কারণ \0নাল চরিত্রের সমান, এবং \0dddকোড পয়েন্ট ডিডিডি সহ একটি চরিত্রের জন্য পলায়ন হিসাবে ব্যবহৃত হয়)। তবে, এই পৃষ্ঠাটি$0 অনুসারে সাবলাইম 2-তে একটি "প্রস্থান চিহ্ন" হিসাবে ব্যবহৃত হবে বলে মনে হচ্ছে (যদিও সাব্লাইম 2 এ কীভাবে একটি বহির্গমন চিহ্ন ব্যবহৃত হয় তা সঠিকভাবে কাজ করতে যথেষ্ট উদাহরণ খুঁজে পেতে আমার সমস্যা হচ্ছে)।
ববিউলাস

3
$0স্নিপেট প্রসারণ থেকে প্রস্থান করার সময় কার্সারটি রাখার জন্য প্রস্থান চিহ্নটি সাবলাইম পাঠ্য 2/3 তে ব্যবহৃত হয়। স্নিপেটে আরও
jrhorn424

2
$ 0 এখনও সাব্লাইম টেক্সট 2
স্ট্ররোকড

2
$0পুরো রেজেক্স ম্যাচ হয়; $1প্রথম ক্যাপচার গ্রুপ।
ওলেথা

103

উপায় দ্বারা, উপরের প্রশ্নে:

এর জন্য:

Hello, my name is bob

অংশ খুঁজুন:

my name is (\w)+

প্রতিস্থাপন অংশ সহ:

my name used to be \1

ফিরে আসবে:

Hello, my name used to be b

অংশটি অনুসন্ধান করুন এতে পরিবর্তন করুন:

my name is (\w+)

এবং প্রতিস্থাপনটি আপনার প্রত্যাশা অনুযায়ী হবে:

Hello, my name used to be bob

যদিও (\ ডাব্লু) + "বব" এর সাথে মিলবে, এটি প্রতিস্থাপনের জন্য আপনি যে গোষ্ঠীকরণ করছেন তা নয়।


52

গুরুত্বপূর্ণ: ( )আপনার অনুসন্ধানের স্ট্রিংয়ে প্রথম বন্ধনী ব্যবহার করুন

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

উদাহরণস্বরূপ আমরা 'px' দিয়ে 'em' প্রতিস্থাপন করতে চাই তবে অঙ্কের মানগুলি সংরক্ষণ করতে পারি:

    margin: 10em;  /* Expected: margin: 10px */
    margin: 2em;   /* Expected: margin: 2px */
  • প্রতিস্থাপন স্ট্রিং: margin: $1pxবাmargin: \1px
  • প্রথম margin: ([0-9]*)emবন্ধনী সহ অনুসন্ধান স্ট্রিং (CORRECT): //
  • অনুসন্ধানের স্ট্রিং (প্রকৃত): margin: [0-9]*em

সঠিক ক্যাস উদাহরণ:margin: ([0-9]*)em অনুসন্ধান স্ট্রিং ব্যবহার করে (প্রথম বন্ধনী সহ)। নিম্নলিখিত হিসাবে প্রথম বন্ধনী দ্বারা পছন্দসই মিলিত বিভাগটি (যেমন $1বা \1) সংযুক্ত করুন ( ):

  • সন্ধান করুন: margin: ([0-9]*)em(প্রথম বন্ধনী সহ)
  • প্রতিস্থাপন করুন: margin: $1pxবাmargin: \1px
  • ফলাফল:
    margin: 10px;
    margin: 2px;

অসম্পূর্ণ ক্ষেত্রে উদাহরণ:margin: [0-9]*em অনুসন্ধান স্ট্রিং ব্যবহার করে (প্রথম বন্ধনী ছাড়াই)। নিম্নলিখিত Regex প্যাটার্ন পছন্দসই লাইনের ম্যাচ হবে কিন্তু মিলেছে অংশ যেমন ভেরিয়েবল যেমন প্রতিস্থাপিত স্ট্রিং উপলব্ধ হবে না $1বা \1:

  • সন্ধান করুন: margin: [0-9]*em(প্রথম বন্ধনী ছাড়াই)
  • প্রতিস্থাপন করুন: margin: $1pxবাmargin: \1px
  • ফলাফল:
    margin: px; /* `$1` is undefined */
    margin: px; /* `$1` is undefined */

1
আপনাকে ধন্যবাদ, এই উত্তরটি সত্যই একটি আকর্ষণীয় সত্যকে নির্দেশ করে যা আমার সমস্যার সমাধান করেছে।
এনেক্ক

এটা ইশারা জন্য ধন্যবাদ। () সহ, আমি প্রতিস্থাপন 3 \ 1 এর সাথে প্রতিস্থাপনটি করতে পারি
জেফ্রে

47

অনুমোদিত উত্তরের একটি চাক্ষুষ উপস্থাপনা এখানে।

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


খুঁজে $_SESSION[(\w+)পাচ্ছ না কেন ? ধন্যবাদ
টনি মিশেল কাওবেট

কারণ $, [, (এবং) বিশেষ অক্ষর তাই আপনার প্রতিটি বিশেষ চরিত্রকে ব্যাকস্ল্যাশ দিয়ে পালানো উচিত।
zeeawan

25

মনে রাখবেন যে আপনি যদি 9 টিরও বেশি ক্যাপচার গ্রুপ ব্যবহার করেন তবে আপনাকে সিনট্যাক্সটি ব্যবহার করতে হবে ${10}

$10অথবা \10বা কাজ \{10}করবে না


ধন্যবাদ! ক্যাপচার করা গোষ্ঠীর শেষের দিকে একটি নম্বর প্রতিস্থাপন ও সংযুক্ত করার জন্য এটি আমার পক্ষে সহায়ক ছিল, উদাহরণস্বরূপ আপনার যেমন 1ধনুর্বন্ধনী ব্যবহার করার প্রয়োজন দ্বিতীয় ক্যাপচার গ্রুপে একটি সংযোজন ${2}1; $ 21 21 ম ক্যাপচার গ্রুপকে বোঝায়, যা বিদ্যমান নেই।
এরিক

1

এ খুঁজছি অনুসন্ধানে সাবলাইম টেক্সট অপ্রাতিষ্ঠানিক ডকুমেন্টেশন এর নিবন্ধ এবং প্রতিস্থাপন করুন , এটা দেখে মনে হচ্ছে +(.+)ক্যাপচার গ্রুপ আপনি চাইতে পারেন ... কিন্তু আমি ব্যক্তিগতভাবে ব্যবহার করা (.*)এবং এটি ভাল কাজ করেন। আপনি যেভাবে বলছেন সেভাবে প্রতিস্থাপন করার জন্য, আপনি ফোরামে এই কথোপকথনটি পছন্দ করতে পারেন , বিশেষত এই পোস্টটি যা কেবল $1প্রথম দখলকৃত গোষ্ঠীটি ব্যবহার করার জন্য কেবল বলেছে ।

এবং যেহেতু ছবিগুলি শব্দের চেয়ে ভাল ...

আগে: সন্ধান / প্রতিস্থাপনের আগে

পরে: অনুসন্ধান / প্রতিস্থাপন পরে

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