rx-to-stringএকটি আর্গুমেন্ট হিসাবে একটি regexp ফর্ম গ্রহণ করে। বাক্যবিন্যাসটি তর্ক হিসাবে একই rx।
(rx-to-string '(or "foo" "bar"))
"\\(?:\\(?:bar\\|foo\\)\\)"
আপনি যেটি পাস করার চেষ্টা করেছেন তা কোনও রেজিএক্সএক্স ফর্ম নয়, তবে রেজিএক্সপ্যাক্স ফর্মগুলির একটি তালিকা। যেহেতু আপনি যা বলতে চাইছেন তা নিয়মিত এক্সপ্রেশনগুলির ক্রম যা তার symbol-startপরে একগুচ্ছ স্ট্রিং অনুসরণ করে symbol-end, আপনাকে সিকোয়েন্স অপারেটরের সাথে নেতৃত্বদান sequenceকরতে হবে (যা সংক্ষেপে seqবা :, বা অদ্ভুতভাবে এমনকি সংক্ষেপেও ঘটতে পারে and)।
(rx-to-string `(: symbol-start (or ,@strings) symbol-end))
"\\(?:\\_<\\(?:ba[rz]\\|foo\\)\\_>\\)"
rxপ্রকৃতপক্ষে একটি ছোট্ট মোড়কের চারপাশ rx-to-stringযা সংকলন সময়ে পরিচালিত হয় কারণ এটি ম্যাক্রো। এইটিকে বিভ্রান্তিকর করে তোলে তা হ'ল আপনি যদি একাধিক যুক্তি পাস rxকরেন তবে একটি অন্তর্নিহিত sequenceঅপারেটর রয়েছে। এর ডকুমেন্টেশন rxস্পষ্ট করা যেতে পারে।
(rx (: symbol-start (or "foo" "bar" "baz") symbol-end))
"\\_<\\(?:ba[rz]\\|foo\\)\\_>"
(rx symbol-start (or "foo" "bar" "baz") symbol-end)
"\\_<\\(?:ba[rz]\\|foo\\)\\_>"