এলিস্পে কি রিজেক্সপ আক্ষরিক রয়েছে?


14

আমার রেগেক্সপসের জন্য প্রয়োজনীয় সংখ্যক ব্যাকস্ল্যাশগুলি বেশ উন্মাদ is এলিস্পে কি রিজেক্সপ আক্ষরিক রয়েছে, তাই আমি এর মতো কিছু লিখতে পারি

rx"some\(regexp\)"

পরিবর্তে

"some\\(regexp\\)"

এ গিয়ে Emacs মত কিছু regexp নির্মান হাইলাইট \\|, \\(এবং \\)। দুর্ভাগ্যক্রমে, অনেক থিমে এটি দৃশ্যমান নয়। আপনি ওভাররাইড করতে পারে font-lock-regexp-grouping-backslashএবং font-lock-regexp-grouping-constructএটি আরো স্বতন্ত্র করা।
Lindydancer

2
কাঁচা স্ট্রিং আক্ষরিক সমর্থন করার জন্য আমি একটি প্যাচ তৈরি করেছি তবে ডেভসরা এতে আগ্রহী নয়।
নর্ফ


@ কেনার্ফ এটি লজ্জাজনক যে স্টেফান কাঁচা স্ট্রিং সমর্থনে আগ্রহী ছিল না, কারণ কাঁচা স্ট্রিংগুলি কোনও নতুন রেজিপ্যাক্স সিনট্যাক্সের (যার পক্ষে আমি থাকব) প্রতিস্থাপনের পক্ষে পরিপূরক হবে।
নাকফ্রোগ

উত্তর:


13

একটি বিকল্প হ'ল rxম্যাক্রো ব্যবহার করে যৌনতা ব্যবহার করে আপনার অভিব্যক্তিগুলি তৈরি করুন।

আপনার উদাহরণ হয়ে যায় (rx "some" (group "regexp"))

কীভাবে rxকাজ করে তা সম্পর্কে ধারণা পেতে rx.el এর ভাষ্য বিভাগ থেকে আরও কয়েকটি উদাহরণ এখানে দেওয়া হয়েছে :

এটি ^;;\\s-*\n\\|^\n হয়ে যায়

(rx (or (and line-start ";;" (0+ space) ?\n)
        (and line-start ?\n)))

এটি [ \t\n]*:\\([^:]+\\|$\\) হয়ে যায়

(rx (and (zero-or-more (in " \t\n")) ":"
         (submatch (or line-end (one-or-more (not (any ?:)))))))

2
@Knarf সম্পাদনার জন্য ধন্যবাদ! আমি আমার ফোনে ছিলাম এবং আমার ভুল হতে পারে এমন একটি উদাহরণ রাখতে চাইনি। :-)
গ্লুকাস

আমরা আসলে অনেকগুলি স্ক্রিপ্টগুলি সরানোর প্রক্রিয়াতে চলেছি rxযা প্রচুর রেইগেক্স অনুসন্ধান ব্যবহার করে এবং সিনট্যাক্সের কারণে পার্ল থেকে এলিস্পে প্রতিস্থাপন করে , যা তাদের বজায় রাখা সহজ করে তোলে। ইমো, অনুরূপ ক্ষেত্রে, আরএক্স সিনট্যাক্স নিজেই পার্ল পাইথন, রুবি ইত্যাদির জন্য এলিসপকে একটি উপযুক্ত যোগ্য বিকল্প হিসাবে তৈরি করে Thank ধন্যবাদ আপনাকে।
জিএসএল

7

না এটিতে রেজিপ্সে আক্ষরিক কিছু নেই, তবে অনেকে pcre2el কে সহায়ক বিকল্প হিসাবে আবিষ্কার করেন।

বিশেষত এটি এলিসপ থেকে এটি ব্যবহার করে:

(rxt-pcre-to-elisp "(abc|def)\\w+\\d+")
   ;; => "\\(\\(?:abc\\|def\\)\\)[_[:alnum:]]+[[:digit:]]+"

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