এখানে চারটি পৃথক re-builder
সিনট্যাক্স বিকল্প রয়েছে এবং আপনি এগুলির মধ্যে স্যুইচ করতে পারেনC-cTAB
দুটি হ'ল সেক্সপ-ফর্ম রিজেক্সপ সংকলকগুলির জন্য rx
এবং sregex
(তবে প্রাক্তনটি আরও বিস্তৃত এবং প্রায় সম্পূর্ণ সিনট্যাক্স-সামঞ্জস্যপূর্ণ, আপনি যদি ব্যবহার না করা পুরানো কোডের সাথে কাজ না করে থাকেন তবে আপনি সত্যই স্ট্রেজেক্সটিকে উপেক্ষা করতে পারবেন)।
অন্য দুটি সিনট্যাক্স বিকল্প হ'ল ( read
ডিফল্ট) এবং string
(যা সিন্টেক্সটি আপনি ইন্টারেক্টিভভাবে ব্যবহার করেন)।
read
যেমন জলের কলকল শব্দ পাঠক কর্তৃক স্বীকৃত অর্থাত - - সিনট্যাক্স 'কোড' সিনট্যাক্স যা আপনি অনুযায়ী regexp প্রবেশ স্ট্রিং জন্য পঠিত সিনট্যাক্স :
C-hig (elisp) Syntax for Strings
RET
string
সিনট্যাক্স (যা আমি সবসময় এই প্রেক্ষাপটে একটি অকারণে বিভ্রান্তিকর নাম বিবেচিত থাকেন) একটি রেগুলার এক্সপ্রেশন স্ট্রিং এর সিনট্যাক্স হল যা ইতিমধ্যে পড়া হয়েছে , এবং যা তাই চরিত্রের কোনো নেই পলায়নের প্রয়োজনীয় যখন লেখার পংক্তি। যা বলা যায়, এটি হ'ল আসল নিয়মিত প্রকাশের বাক্য গঠন, যা আপনি ব্যবহার করেন ঠিক তেমন ইমাক্স আপনাকে ইন্টারেক্টিভভাবে অনুরোধ জানায়।
আপনি যদি ডিফল্টরূপে স্ট্রিং সিনট্যাক্স ব্যবহার করতে চান তবে নিম্নলিখিতটি আপনার ডিআইডি ফাইলে যুক্ত করুন বা ব্যবহার করুন M-x customize-option
RET reb-re-syntax
RET
(setq reb-re-syntax 'string)
দ্রষ্টব্য যে আপনি কোনও ক্ষতি ছাড়াই রেজিএক্সপ্যাক সম্পাদনা করার সময় পঠন এবং স্ট্রিং সিনট্যাক্সের মধ্যে পিছনে স্যুইচ করতে পারেন। এছাড়াও আপনি সুইচ করতে পারেন থেকে পড়তে / পংক্তি সিনট্যাক্স sexp ফরম (স্বাভাবিকভাবেই; স্ট্রিং sexps সংকলন কি সেই লাইব্রেরির জন্য হয়), কিন্তু আপনি অন্য দিক না যান এবং একটি স্ট্রিং থেকে একটি sexp তৈরি করতে পারেন। পুনর্নির্মাণকারী মনে রাখে যে সেক্সপটি কী ছিল, তাই আপনি সিনট্যাক্স পরিবর্তন করার সময় আপনি সেই ফর্মটি হারাবেন না ; তবে আপনি যদি আলাদা সিনট্যাক্সে রেজিপ্সকে পরিবর্তন করেন এবং তারপরে ফিরে যান তবে তা আপডেট হয় না। সংক্ষেপে, আপনি যদি একটি সেক্সপ হিসাবে রেজিপ এক্সটি তৈরি করে থাকেন তবে নিশ্চিত হন যে এই সিনট্যাক্সটি ব্যবহার করার সময় আপনি কেবল এটি সম্পাদনা করেছেন ।
rx
সমর্থন সহ একটি গেটচা এটি প্রকৃতপক্ষে rx-to-string
ফাংশনটি ব্যবহার করছে যা rx
কোডটিতে ম্যাক্রো ব্যবহার করার মতো নয় । rx
একটি স্বতন্ত্র সংখ্যক ফর্ম আর্গুমেন্ট গ্রহণ করে এবং তাদেরকে একটি অন্তর্নিহিত অনুক্রম হিসাবে গণ্য করে , যেখানে rx-to-string
কেবলমাত্র একটি একক রূপ গ্রহণ করে এবং যে কোনও শীর্ষ স্তরের ক্রমটি অবশ্যই সুস্পষ্ট '(sequence ...)
বা সমতুল্য হওয়া উচিত ।
সংক্ষেপে, আপনি যখন '(...)
পুনর্নির্মাণকারীতে কোনও ফর্ম প্রবেশ করেন, তখন এটি প্রক্রিয়াজাত হয় (rx-to-string '(...))
এবং না(rx ...)
এছাড়াও খেয়াল রাখবেন যে কোনও অবৈধ ফর্মের কারণে re-builder
ফর্মটি আবার বৈধ হয়ে যাওয়ার পরেও সম্পর্কিত বাফারে ম্যাচগুলি গতিশীলভাবে আপডেট করা বন্ধ করতে পারে । C-cC-uবাঁধাই জন্য reb-force-update
এই পরিস্থিতিতে নিরসনের জন্য দরকারী।
ডিফল্টরূপে মোড লাইন শো "পুনরায় নির্মাতা" যখন ব্যবহার read
বা string
বাক্য গঠন, এবং "পুনরায় নির্মাতা পাতার মর্মর" যখন ব্যবহার rx
বা sregex
বাক্য গঠন, কিন্তু এটা অনেক বেশী শনাক্ত করার দরকারী বলে মনে হয় নির্দিষ্ট ব্যবহারে সিনট্যাক্স (বিশেষত মধ্যে পার্থক্য করতে read
এবং string
)।
আপনি যদি delight
GNU ELPA থেকে প্যাকেজটি ইনস্টল করেন , আপনি মোড লাইনে একটি সিনট্যাক্স সূচক যুক্ত করতে নিম্নলিখিতটি ব্যবহার করতে পারেন।
(let ((name '("Regexp[" (:eval (symbol-name reb-re-syntax)) "]")))
(delight `((reb-mode ,name :major)
(reb-lisp-mode ,name :major))))
এটি মোডের নামটিকে read
সিনট্যাক্সে "রেজিএক্সপেক্স [পড়ুন]" এবং অন্যদের জন্য একইভাবে পরিবর্তন করে।
বা জন্য একটি ইঙ্গিত অন্তর্ভুক্ত rx
rx-to-string
উপরে বর্ণিত বনাম গোটার করতে, rx
সিনট্যাক্সটি ব্যবহার করার সময় মোড লাইনটিকে "রেজিপ্সপ [আরএক্স-টু-স্ট্রিং]" বলুন :
(let ((name '("Regexp["
(:eval (symbol-name (if (eq reb-re-syntax 'rx)
'rx-to-string
reb-re-syntax)))
"]")))
(delight `((reb-mode ,name :major)
(reb-lisp-mode ,name :major))))